设置ROI OpenCV Android时出错

Jam*_*meo 3 android opencv roi image-processing

我试图弄清楚如何在Android上的OpenCV中设置图像的ROI.我已经在其他操作系统上完成了这个,所以我认为我这样做是在语义上是正确的,但在某处有一个错误.

到目前为止,我已经尝试过了

Rect roi = new Rect(0, 0, inputFrame.cols(), inputFrame.rows());
Mat cropped = new Mat(inputFrame, roi);
Run Code Online (Sandbox Code Playgroud)

但是我在OpenCV类中的某处看起来像这样的错误

Utils.matToBitmap() throws an exception:/home/reports/ci/slave/opencv/modules/java/generator/src/cpp/utils.cpp:107: 
error: (-215) src.dims == 2 && info.height == (uint32_t)src.rows && info.width ==
(uint32_t)src.cols in function void Java_org_opencv_android_Utils_nMatToBitmap2
(JNIEnv*, jclass, jlong, jobject, jboolean)
Run Code Online (Sandbox Code Playgroud)

我在opencv包装类提供的onCameraFrame回调中调用它

不确定如何解决这个问题,是否有人成功完成此操作?

Rui*_*ues 8

OpenCV for Android(和新的Java API)有自己的方式来创建ROI.

您所要做的就是调用Mat对象的submat方法.如果我没有弄错,调用submat不会创建该图像区域的副本,如果你想要一个副本,你可以在submat上使用copyTo来达到这个目的.

Mat roi = inputFrame.submat(rowStart, rowEnd, colStart, colEnd);
Run Code Online (Sandbox Code Playgroud)

您可以通过3种不同的方式调用submat,查看链接以获取更多详细信息:

  • submat(int rowStart,int rowEnd,int colStart,int colEnd)

submat 1

  • submat(Range rowRange,Range colRange)

submat 2

  • submat(Rect roi)

submat 3