Самый быстрый способ получить количество белых пикселей в двоичном изображении с помощью OpenCV

каков самый быстрый способ получить количество белых пикселей в двоичном изображении с помощью OpenCV? Есть ли что-то быстрее, чем использование двух циклов и доступ к изображению пиксель за пикселем?

1 ответов


самый краткий способ сделать это:

cv::Mat image, mask;    //image is CV_8UC1
cv::inRange(image, 255, 255, mask);
int count = cv::countNonZero(mask);

если вы работаете на двоичном изображении, то вызов cv::inRange() Не нужно, а просто cv::countNonZero() хватит.

хотя любой метод должен повторяться через все пиксели, это может быть в состоянии использовать встроенный OpenCV parallel_for_(), который допускает параллельное выполнение.

если ваше изображение является непрерывным,вы можете перебирать все данные, используя один цикл.