错误设置ROI的OpenCV的Android(Error setting ROI OpenCV An

2019-07-19 06:24发布

我试图找出如何设置投资回报率在OpenCV的Android上的图像。 我这样做在其他操作系统上,所以我觉得怎么我这样做是语义正确的,但有什么地方出错。

到目前为止,我已经试过这

Rect roi = new Rect(0, 0, inputFrame.cols(), inputFrame.rows());
Mat cropped = new Mat(inputFrame, roi);

但是我看起来像这样的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)

我通过OpenCV的包装类中提供的onCameraFrame回调调用此

不知道如何去这个问题,有没有人成功地做到了这一点?

Answer 1:

OpenCV进行的Android(和新的Java API)都有自己的方式创造的投资回报率。

所有你所要做的就是打电话给你垫目标的子阵列方法。 如果我没有记错的话,调用子阵列不会创建图像区域的副本,如果你想要一个副本,你可以在子阵列为目的使用CopyTo从。

Mat roi = inputFrame.submat(rowStart, rowEnd, colStart, colEnd);

你可以调用子阵列在3点不同的方式,检查链接,了解更多详细信息:

  • 子阵列(INT rowStart,INT rowEnd,INT colStart,INT colEnd)

子阵列1

  • 子阵列(范围rowRange,范围colRange)

子阵列2

  • 子阵列(矩形ROI)

子阵列3



Answer 2:

该错误,说明你正在尝试设置与图像的尺寸相同的一个投资回报率,因此没有必要在这种情况下,投资回报率。

为了确保这就是问题所在,下面应该工作:

Rect roi = new Rect(0, 0, inputFrame.cols() - 1, inputFrame.rows() - 1);
Mat cropped = new Mat(inputFrame, roi);


文章来源: Error setting ROI OpenCV Android