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

How to crop particular rectangle

$
0
0
Hi, I wanted to crop a segment on real time and process the image Tessaract Api any one help me? /*This is my code */ List squares = new LinkedList(); Mat frame = inputFrame.rgba().clone(); if (Math.random()>0.80) { Mat smallerImg = new Mat(new Size(frame.width()/2, frame.height()/2),frame.type()); Log.e(TAG,"Width : "+frame.width()/2); Log.e(TAG,"Width : "+frame.height()/2); Log.e(TAG,"Type : "+frame.type()); Mat gray = new Mat(frame.size(),frame.type()); Mat gray0 = new Mat(frame.size(), CvType.CV_8U); // down-scale and upscale the image to filter out the noise Imgproc.pyrDown(frame, smallerImg, smallerImg.size()); Imgproc.pyrUp(smallerImg, frame, frame.size()); for( int c = 0; c < 3; c++ ) { List sourceChannels = new ArrayList(); List outChannel = new ArrayList(); Core.split(frame, sourceChannels); Log.e(TAG, " : "+frame); outChannel.add(new Mat(sourceChannels.get(0).size(),sourceChannels.get(0).type())); Log.e(TAG, " : "+sourceChannels.get(0).size()); Core.mixChannels(sourceChannels, outChannel, new MatOfInt(c,0)); Core.merge(outChannel, gray); for( int l = 1; l < N; l++ ) { Imgproc.threshold(gray, gray0, (l + 1) * 255 / N, 255, Imgproc.THRESH_BINARY); List contours = new ArrayList(); // find contours and store them all as a list Imgproc.findContours(gray0, contours, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE); MatOfPoint approx = new MatOfPoint(); for( int i = 0; i < contours.size(); i++ ) { approx = approxPolyDP((MatOfPoint) contours.get(i), Imgproc.arcLength(new MatOfPoint2f(((MatOfPoint) contours.get(i)).toArray()), true) * 0.02d, true); if( approx.toArray().length == 4 && Math.abs(Imgproc.contourArea(approx)) > 1000 && Imgproc.isContourConvex(approx) ) { Log.e(TAG,"Inside Four Vertices"); double maxCosine = 0; for( int j = 2; j < 5; j++ ) { // find the maximum cosine of the angle between joint edges double cosine = Math.abs(angle(approx.toArray()[j%4], approx.toArray()[j-2], approx.toArray()[j-1])); maxCosine = Math.max(maxCosine, cosine); } // if cosines of all angles are small // (all angles are ~90 degree) then write quandrange // vertices to resultant sequence if( maxCosine < 0.3 ) squares.add(approx); } } } } } Mat image = inputFrame.rgba(); Imgproc.drawContours(image, squares, -1, new Scalar(0,0,255)); Bitmap bitmap = Bitmap.createBitmap(image.width(), image.height(), Bitmap.Config.ARGB_8888); Utils.matToBitmap(image, bitmap); try { OutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(new File(Environment.getExternalStorageDirectory().toString() + "/ocr.png"))); bitmap.compress(Bitmap.CompressFormat.PNG, 0, bufferedOutputStream); bufferedOutputStream.close(); Log.e("TAG","OCR.PNG Saved successfully..."); } catch (IOException e) { e.printStackTrace(); } return image;

Viewing all articles
Browse latest Browse all 1117

Trending Articles