OpenCV cvtColor()使用什么灰度转换算法?

Ste*_*eve 12 algorithm opencv grayscale

将OpenCV中的图像从彩色转换为灰度时,使用什么转换算法?我试着在GitHub的源代码中查看这个,但我没有任何成功.

亮度方法平均最突出和最不突出的颜色:

  (max(R, G, B) + min(R, G, B)) / 2.
Run Code Online (Sandbox Code Playgroud)

平均方法只是平均值:

  (R + G + B) / 3.
Run Code Online (Sandbox Code Playgroud)

发光度方法是普通方法的更复杂版本.它还对这些值进行平均,但它形成了一个加权平均值来说明人类的感知.我们对绿色比其他颜色更敏感,所以绿色最重要.

    The formula for luminosity is 0.21 R + 0.72 G + 0.07 B.
Run Code Online (Sandbox Code Playgroud)

以下是一些转换算法的示例:http: //www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale/

Bul*_*ull 21

灰度算法的颜色在cvtColor()文档中说明.(搜索RGB2GRAY).使用的公式与CCIR 601相同:

Y = 0.299 R + 0.587 G + 0.114 B.

您提供的发光度公式适用于ITU-R BT建议书.709.如果需要,可以CV_RGB2XYZ在第三个参数中指定(例如)cvtColor()然后提取Y通道.

您可以通过CV_RGB2HLS转换然后提取L通道来使OpenCV执行您描述的"亮度"方法.我不认为OpenCV具有"平均"方法的转换,但是如果您浏览文档,您将看到还有其他一些可能性.