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

时间:2013-06-04 23:36:09

标签: c# opencv emgucv

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

1 个答案:

答案 0 :(得分:11)

实现这一目标的最简洁方法是:

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

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