2

java api で OpenCV を使用してサブイメージを取得する方法についてはすでに見ましたが、これは役に立ちませんでした

ファイルから読み込んだマット画像のサブ画像を作成する方法に興味があります。私が実行すると:

crop = img.submat(405, 450, 280, 335);

私は得る:

  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)

なぜこれが起こっているのか理解できないようです。画像に対してPythonで同様のコードと思われるものを実行すると、正しく動作します...しかし、動作するにはJavaが必要です...

編集:

    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);
4

1 に答える 1