问题
I have already looked at how to get sub image by using OpenCV in java api, but this did not help
I am curious how to create a sub image of a Mat image that I have loaded in from a file. When I run:
crop = img.submat(405, 450, 280, 335);
I get :
OpenCV Error: Assertion failed (m.dims >= 2) in cv::Mat::Mat, file ..\..\..\..\opencv\modules\core\src\matrix.cpp, line 269
Exception in thread "main" CvException [org.opencv.core.CvException: cv::Exception: ..\..\..\..\opencv\modules\core\src\matrix.cpp:269: error: (-215) m.dims >= 2 in function cv::Mat::Mat
]
at org.opencv.core.Mat.n_submat_rr(Native Method)
at org.opencv.core.Mat.submat(Mat.java:2270)
at Parking.WebCommunications.processImage(WebCommunications.java:54)
at Parking.WebCommunications.<init>(WebCommunications.java:27)
at Parking.App.main(App.java:19)
I cannot seem to figure out why this is happening. When I run what seems to be a similar piece of code in python on the image it works properly...but I need java to work...
EDIT:
Range xRange = new Range(405, 450);
Range yRange = new Range(280, 355);
Mat crop;
Mat blur = null;
System.loadLibrary("opencv_java2411");
//Load image from file
Mat img = Highgui.imread("/Users/\"User name\"/git/SE300/JavaWorkspace/ParkingLotApp/src/main/resources/bottomOpen.JPG");
//LOOP:
//Crop to the Nth spot: cropN = img[y:y+h, x:x+w]
System.out.println(img.rows());
System.out.println(img.cols());
crop = img.submat(405, 450, 280, 335);
回答1:
I manged to do it with some basic classes in Java version of Opencv.
Here is the code for it.
<pre>
// select the region fist
rectCrop = new Rect(start_x, start_y, width, height);
// generate matrix of the interested region, from original_image
Mat image_roi = new Mat(original_image, rectCrop);
// code to write the interested image to disk
Highgui.imwrite("/Users/kapil/Research/test_imgs/out/area_of_intereset.jpg", image_roi);
</pre>
来源:https://stackoverflow.com/questions/35666255/get-a-sub-image-using-opencv-java