【问题标题】:Error setting ROI OpenCV Android设置 ROI OpenCV Android 时出错
【发布时间】:2016-08-16 18:42:20
【问题描述】:

我想弄清楚如何在 Android 上的 OpenCV 中为图像设置 ROI。我在其他操作系统上做过这个,所以我认为我的做法在语义上是正确的,但是某处有错误。

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

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 回调中调用它

不知道怎么做,有人成功过吗?

【问题讨论】:

    标签: android image-processing opencv roi


    【解决方案1】:

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

    您所要做的就是调用您的 Mat 对象的 submat 方法。 如果我没记错的话,调用 submat 不会创建该图像区域的副本,如果您想要一个副本,您可以为此目的在 submat 上使用 copyTo。

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

    您可以通过 3 种不同的方式调用 submat,查看链接了解更多详情:

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

    submat 1

    • submat(Range rowRange, Range colRange)

    submat 2

    • submat(矩形 roi)

    submat 3

    【讨论】:

    • 我实际上使用它,以便我可以在窗口的不同部分显示我正在执行的一些图像处理。实际上我什至不认为这和投资回报率真的是一回事。感谢您的输入!
    • 是的,请随意接受这个答案。我认为@karlphillip 也会同意这种方法更合适。
    • 我选择了你的答案,因为它与我最终使用的非常相似。但我相信它们在记忆方面几乎相同
    • @Jameo 这样做并不酷,因为您在大约 10 天前得到了某人的有效回答。但是你可以做你想做的事。 :)
    【解决方案2】:

    错误表明您正在尝试设置具有相同图像尺寸的 ROI,因此在这种情况下不需要 ROI。

    为了确保这是问题所在,以下应该有效:

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

    【讨论】:

    • 是的,我将其更改为整个图像,因为我虽然遇到了裁剪尺寸无效的问题。您上面的代码也不起作用。看起来它只与对 Utils.matToBitmap() 的调用有关(实际上我已经完成了,在那之前一切看起来都很好)。知道为什么更改 ROI 会影响这一点吗?
    • 这是随机的,但可能导致了我的问题,img.copyTo(img2) 和 img2 = img.clone() 之间有区别吗?
    • Mat::copyToMat::clone。如果设置了一个,copyTo() 似乎会尊重 ROI,而clone() 会忽略它。
    • 感谢您的帮助,我终于弄明白了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多