7

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

4

1 回答 1

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

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

于 2013-06-04T23:55:02.637 回答