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