OpenCV中的错误ROI图像

Posted

技术标签:

【中文标题】OpenCV中的错误ROI图像【英文标题】:Error ROI image in OpenCV 【发布时间】:2016-01-20 03:36:56 【问题描述】:

我有一张带有一些噪点的二值图像。我想通过使用沿图像滑动的矩形大小(10x10)来减少噪点。

如果矩形包含超过 20 个nonZero 像素,我会将 ROI 复制到目标图像。

for (int i = 0; i < binary.rows-10; i+=10)
    for (int j = 0; j < binary.cols-10; j+=10)
    
        cv::Rect Roi(i, j, 10, 10);
        cv::Mat countImg = cv::Mat(10, 10, CV_8UC1);
        countImg = cv::Mat(binary, Roi);

        if (cv::countNonZero(countImg)>20)
        
            countImg.copyTo(binary_filter.rowRange(i, i + 10).colRange(j, j + 10));
        
    

程序在函数countImg = cv::Mat(binary, Roi);遇到错误谁能解释一下?

【问题讨论】:

【参考方案1】:

真正的问题发生在这里:

cv::Rect Roi(i, j, 10, 10);

cv::Rect 的格式为 (x, y, width, height) 而不是 (y, x, width_, height)


要使其正常工作,请将其更改为

cv::Rect Roi(j, i, 10, 10);

【讨论】:

以上是关于OpenCV中的错误ROI图像的主要内容,如果未能解决你的问题,请参考以下文章

在openCV中,如何替换图像中的RGB ROI

Mat OpenCV Rect ROI:访问冲突

OpenCV 人脸检测 ROI 断言失败

opencv 替换图像中的一部分

OpenCV_复制一个或多个ROI图像区域

opencv 图像基本操作 获取图像大小ROI操作通道分割与合并等