Я создал Java-проект в Ubuntu 18.04 с libopencv_java320.so, и он работал очень хорошо. Проблема возникает, когда я запускаю файл * .jar в Mac OS с libopencv_java320.dylib.
OpenCV Error: Assertion failed (dims <= 2 && step[0] > 0) in locateROI, file /Users/Bryan/Documents/opencv-3.2.0/modules/core/src/matrix.cpp, line 949
CvException [org.opencv.core.CvException: cv::Exception: /Users/Bryan/Documents/opencv-3.2.0/modules/core/src/matrix.cpp:949: error: (-215) dims <= 2 && step[0] > 0 in function locateROI]
at org.opencv.imgproc.Imgproc.adaptiveThreshold_0(Native Method)
at org.opencv.imgproc.Imgproc.adaptiveThreshold(Imgproc.java:1355)
Мой код, где может возникнуть эта ошибка:
System.load(this.opencvNativeLibPath + "libopencv_java320.dylib");
Mat src = Imgcodecs.imread(folderPath + "/" + imgName);
int xx = 10, yy = 10;
if (xx > src.width() || yy > src.height()) {
xx = src.width() / 2;
yy = src.height() / 2;
}
Rect r = new Rect(xx, yy, src.width() - xx, src.height() - yy);
src = src.submat(r);
Mat src_gray = new Mat();
if (src == null)
System.out.println("Problem loading image!!!");
if (src.channels() == 3) {
Imgproc.cvtColor(src, src_gray, Imgproc.COLOR_BGR2GRAY);
} else {
src_gray = src.clone();
}
Mat not_gray = new Mat();
Core.bitwise_not(src_gray, not_gray);
// Apply adaptiveThreshold at the bitwise_not of gray, notice the ~
// symbol
Mat bw = new Mat();
Imgproc.adaptiveThreshold(not_gray, bw, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 15, -2);
Спасибо за вашу помощь.