使用opencv估算灰度图片的平均亮度

时间:2013-03-19 14:12:46

标签: opencv

我有一张灰度图片,我只想将其转换为黑白图片。但为此,我需要计算正确的阈值,我希望该阈值等于图片的平均亮度。

所以,我想知道如何使用OpenCV来计算该阈值。框架中是否存在一种方法可以轻松实现这一点?

我想为每个像素添加亮度的每个值(0到255之间),然后将和除以像素本身的数量,但我发现访问这些数据的方法非常慢(.at(i, j)[k]为rgb图片)。但我的图片是灰度图片,我希望它非常快,所以它可以在iPhone上运行。

2 个答案:

答案 0 :(得分:5)

要计算这些统计信息,请使用cv::sum(),甚至更好,cv::mean()

但是,OpenCV已经具有阈值功能,可以完成您想要的所有事情: cv::adaptiveThreshold()

另外,您应该查看Otsu的方法,请cv::threshold()选择THRESH_OTSU

答案 1 :(得分:-1)

您可以使用蒙特卡罗算法,对随机点进行采样,而不是对所有图像点进行采样,直到覆盖1%的图像为止。结果应该与实际值非常相似。