使用 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_()
,它允许并行执行。
如果您的图像是连续的,您可以使用一个循环遍历所有数据。
关于c# - 使用 OpenCV 获取二值图像中白色像素数量的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16929190/