Bonjour tout le monde,

Je suis actuellement en train de développer un plugin pour ImageJ en java qui fait appel à la fonction grabcut d'OpenCV. J'ai réussi à convertir les images d'imageJ en matrice d'opencv mais maintenant je bloque sur un problème que je n'arrive pas à comprendre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
OpenCV Error: Bad argument ( N >= K ) in kmeans
Voici mon code qui fait appel à grabcut:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
//image est un objet Mat pour type CV_8UC1
 
Mat mask = Mat.zeros(image.size(), image.type());
//Patch of 3*3 of foreground data.
mask.put(halfW-1, halfH-1, Imgproc.GC_BGD);
mask.put(halfW,   halfH-1, Imgproc.GC_BGD);
mask.put(halfW+1, halfH-1, Imgproc.GC_BGD);
mask.put(halfW-1, halfH,   Imgproc.GC_BGD);
mask.put(halfW,   halfH,   Imgproc.GC_BGD);
mask.put(halfW+1, halfH,   Imgproc.GC_BGD);
mask.put(halfW-1, halfH+1, Imgproc.GC_BGD);
mask.put(halfW,   halfH+1, Imgproc.GC_BGD);
mask.put(halfW+1, halfH+1, Imgproc.GC_BGD);
 
//All the 4 square's corners are inside the background.
mask.put(0, 0, Imgproc.GC_FGD);
mask.put(0, h, Imgproc.GC_FGD);
mask.put(w, 0, Imgproc.GC_FGD);
mask.put(w, h, Imgproc.GC_FGD);
 
//Convert gray matrix to rgb matrix
Mat imageRGB = Mat.zeros(image.size(), CvType.CV_8UC3);
Imgproc.cvtColor(image, imageRGB, Imgproc.COLOR_GRAY2RGB);
 
Mat fgdModelRGB = Mat.zeros(1, 65, CvType.CV_64FC1);
Mat bgdModelRGB = Mat.zeros(1, 65, CvType.CV_64FC1);
 
Imgproc.grabCut(imageRGB, mask, new Rect(100, 100, w-100, h-100), bgdModelRGB, fgdModelRGB, 5, Imgproc.GC_INIT_WITH_MASK);
Je me doute que je ne dois pas faire quelque chose de correct mais je ne vois pas quoi.

Pour info, je dois travailler sur des images avec une grande résolution (7000*6000 environ).

Auriez-vous des suggestions?

Merci.