ok, so I'm new to opencv, I managed to do a grabcut that seems okay to me, except that the edges are pretty out of shape, I want realistic edges, maybe blur the edges to get a perfectly made image, another the thing I noticed is colors that are too bright after the whole process that I wanted to reduce so that a little more acceptable below was my code
private Bitmap backGrndErase() { color = new Scalar(255, 0, 0, 255); dst = new Mat(); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.myshirt); Log.d(TAG, "bitmap: " + bitmap.getWidth() + "x" + bitmap.getHeight()); bitmap = ResizeImage.getResizedBitmap(bitmap, calculatePercentage(40, bitmap.getWidth()), calculatePercentage(40, bitmap.getHeight())); bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); Log.d(TAG, "bitmap 8888: " + bitmap.getWidth() + "x" + bitmap.getHeight()); Mat img = new Mat(); Utils.bitmapToMat(bitmap, img); Point p1 = new Point((img.cols()/10), (img.rows()/10)); Point p2 = new Point((img.cols()-img.cols()/10), (img.rows()-img.rows()/10)); Rect rect = new Rect(p1,p2); int border = 20; int border2 = border + border; Rect rect2 = new Rect( border, border, img.cols() - border2, img.rows()-border2); Mat mask = new Mat(); debugger(""+mask.type()); 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, rect2, bgdModel, fgdModel, 2, Imgproc.GC_INIT_WITH_RECT); Mat source = new Mat(1, 1, CvType.CV_8U, new Scalar(3.0));
I posted the same question on an opencv site, but there seems to be no low audience here, images 

