Утверждение java * .dylib в Opencv320 не удалось в Mac OS, но нормально работает в Ubuntu с * .so lib - PullRequest
0 голосов
/ 12 ноября 2018

Я создал 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);

Спасибо за вашу помощь.

...