Самый быстрый способ получить количество белых пикселей в двоичном изображении, используя 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_(), что позволяет параллельное выполнение.

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

Другие вопросы по тегам