Hello,every one,I use grabcut as opencv step by step ,but the result image is not the right image as I need,here is the code,It is should be output an white background bitmap ,but it is still black.
//GrabCut part Mat img = new Mat(); Utils.bitmapToMat(bitmap, img); Log.d(TAG, "img: " + img);
int r = img.rows();
int c = img.cols();
Point p1 = new Point(rect.left,rect.top );
Point p2 = new Point(rect.right, rect.bottom);
org.opencv.core.Rect rect1=new org.opencv.core.Rect(p1,p2) ;
//Rect rect = new Rect(50,30, 100,200);
Log.d(TAG, "rect: " + rect);
Mat mask = new Mat();
mask.setTo(new Scalar(125));
Mat fgdModel = new Mat();
fgdModel.setTo(new Scalar(255, 255, 255));
Mat bgdModel = new Mat();
bgdModel.setTo(new Scalar(255, 255, 255));
Mat imgC3 = new Mat();
Imgproc.cvtColor(img, imgC3, Imgproc.COLOR_RGBA2RGB);
Log.d(TAG, "imgC3: " + imgC3);
Log.d(TAG, "Grabcut begins");
Imgproc.grabCut(imgC3, mask, rect1, bgdModel, fgdModel,5, Imgproc.GC_INIT_WITH_RECT);
Mat source = new Mat(1, 1, CvType.CV_8U, new Scalar(3.0));
Core.compare(mask, source, mask, Core.CMP_EQ);
Mat foreground = new Mat(img.size(), CvType.CV_8UC3, new Scalar(255, 255, 255));//background should be white
img.copyTo(foreground,mask);//finish
// foreground.setTo(new Scalar(255, 255, 255));
Utils.matToBitmap(foreground, bitmap);