1

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

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

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

4

2 回答 2

6

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

然而,OpenCV 已经有一个阈值函数,可以为你做所有你想做的事情: cv::adaptiveThreshold()

此外,您应该查看 Otsu 的方法,请参阅cv::threshold()选项THRESH_OTSU

于 2013-03-19T14:24:00.993 回答
0

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

于 2013-03-19T14:24:01.367 回答