OpenCV中的错误ROI图像

时间:2016-01-20 03:36:57

标签: c++ opencv rect 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);遇到错误谁可以解释?

1 个答案:

答案 0 :(得分: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);