c# - 使用 OpenCV 获取二值图像中白色像素数量的最快方法

标签 c# opencv emgucv

使用 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/

相关文章:

python - 使用霍夫圆变换检测圆阵列

c# - 如何在C#中将位图转换为intptr

c# - 骰子面值识别

c# - 在 emgu CV 中进行相机校准后如何访问旋转和平移矢量?

c# - 类变量之间的歧义

c# - 在 C++ 中定义的以下结构的 C# 等价物是什么

c# - 使用 BouncyCaSTLe 验证 ECDSA 签名

c# - 如何从 C# 中的嵌入式文件流中解压缩

python - 在 python,openCV 中使用网络摄像头的问题

python - 循环保存生成的多个帧