List of usage examples for org.opencv.imgproc Imgproc grabCut
public static void grabCut(Mat img, Mat mask, Rect rect, Mat bgdModel, Mat fgdModel, int iterCount, int mode)
From source file:OCV_GrabCut.java
License:Open Source License
@Override public void run(ImageProcessor ip) { // src (RGB)/*w w w .j a v a 2 s .com*/ int[] src_arr = (int[]) imp_src.getChannelProcessor().getPixels(); int imw_src = imp_src.getWidth(); int imh_src = imp_src.getHeight(); Mat mat_src = new Mat(imh_src, imw_src, CvType.CV_8UC3); OCV__LoadLibrary.intarray2mat(src_arr, mat_src, imw_src, imh_src); // tmp (Gray) byte[] msk_arr = (byte[]) imp_msk.getChannelProcessor().getPixels(); int imw_msk = imp_msk.getWidth(); int imh_msk = imp_msk.getHeight(); int numpix_msk = imw_msk * imh_msk; // output Mat mat_msk = new Mat(imh_msk, imw_msk, CvType.CV_8UC1); Mat bgdModel = new Mat(); Mat fgdModel = new Mat(); // run mat_msk.put(0, 0, msk_arr); Imgproc.grabCut(mat_src, mat_msk, rect, bgdModel, fgdModel, iter, TYPE_VAL[ind_type]); mat_msk.get(0, 0, msk_arr); if (enFgd) { for (int i = 0; i < numpix_msk; i++) { if (msk_arr[i] == Imgproc.GC_FGD || msk_arr[i] == Imgproc.GC_PR_FGD) { msk_arr[i] = (byte) 255; } else { msk_arr[i] = (byte) 0; } } } }