Quantcast
Channel: OpenCV Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 1117

Remove background from canny image in android opencv

$
0
0
Hello, i want remove background from captured image. As of now i am capture usa driving license image and convert it into canny image. Here bellow is my output image so i want to remove rest of all background Except for square of the license image. i was try grab cut image for this but it's not working properly. because sometime it's transparent card background also. i need transparent only rest of other background canny edges not a card. It will be great, if you suggest me the way. here is my code which i used from this [reference code](http://answers.opencv.org/question/24463/how-to-remove-black-background-from-grabcut-output-image-in-opencv-android/): public Bitmap removeBackground(Bitmap bitmap) { //GrabCut part Mat img = new Mat(); Utils.bitmapToMat(bitmap, img); int r = img.rows(); int c = img.cols(); Point p1 = new Point(c / 100, r / 100); Point p2 = new Point(c - c / 100, r - r / 100); Rect rect = new Rect(p1, p2); Mat mask = new Mat(); Mat fgdModel = new Mat(); Mat bgdModel = new Mat(); Mat imgC3 = new Mat(); Imgproc.cvtColor(img, imgC3, Imgproc.COLOR_RGBA2RGB); Imgproc.grabCut(imgC3, mask, rect, bgdModel, fgdModel, 1 ,Imgproc.GC_INIT_WITH_RECT); Mat source = new Mat(1, 1, CvType.CV_8U, new Scalar(3.0)); Core.compare(mask, source/* GC_PR_FGD */, mask, Core.CMP_EQ); //This is important. You must use Scalar(255,255, 255,255), not Scalar(255,255,255) Mat foreground = new Mat(img.size(), CvType.CV_8UC3, new Scalar(255, 255, 255, 255)); img.copyTo(foreground, mask); // convert matrix to output bitmap bitmap = Bitmap.createBitmap((int) foreground.size().width, (int) foreground.size().height, Bitmap.Config.ARGB_8888); Utils.matToBitmap(foreground, bitmap); findEdges(bitmap); return bitmap; } ![image description](/upfiles/15446009941096753.jpg)

Viewing all articles
Browse latest Browse all 1117

Trending Articles