我有一个有噪音的二进制图像。我想通过使用沿图像滑动的矩形尺寸(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);
遇到错误谁可以解释?
答案 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);