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); |
Partager