2016-01-20 2 views
0

У меня есть двоичное изображение с некоторым шумом. Я хочу уменьшить шум, используя размер прямоугольника (10x10), скользящий вдоль изображения.Ошибка изображения ROI в OpenCV

Если прямоугольник состоит из более чем 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); 
+0

ТКС щ я получил его –

Смежные вопросы