使用OpenCV获取二进制图像中白色像素数的最快方法

使用OpenCV获取二进制图片中白色像素数的最快方法是什么? 有没有比使用两个for循环并逐像素地访问图像更快的东西?

最简洁的方法是:

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_() ,这允许并行执行。

如果图像是连续的,则可以使用单个循环遍历所有数据。