OpenCV 中的错误 ROI 图像



我有一个带有一些噪音的二进制图像。我想通过使用沿图像滑动的矩形大小(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);中遇到错误 谁能解释?

真正的问题发生在这里:

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

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

(y, x, width_, height)

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

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

最新更新