我从YouTube下载了一个视频,里面只有黑色或白色。很明显它是被压缩过的,所以我得到的 RGB 值不是 (255, 255, 255)
或者 (0, 0, 0)
,而是像 (128, 128, 128)
这样的值。
我在互联网上搜索到了这个公式 Y = 0.2126*R + 0.7152*G + 0.0722*B
。然而,当我在 Python 中编写这个公式时,有时候结果是错误的。如何通过给定的 RGB 元组来确定它更接近于白色还是黑色呢?
我还编写了 Formula to determine perceived brightness of RGB color 中的公式,但它仍然给出了错误的值(即该颜色比白色更接近黑色)。
def rgb_percent(r, g, b):
sR = r
sG = g
sB = b
vR = sR / 255
vG = sG / 255
vB = sB / 255
def sRGBtoLin(colorChannel):
if colorChannel <= 0.04045:
return colorChannel / 12.92
else:
return pow(((colorChannel + 0.055) / 1.055), 2.4)
Rlin = sRGBtoLin(vR)
Glin = sRGBtoLin(vG)
Blin = sRGBtoLin(vB)
y = (0.2126 * Rlin + 0.7152 * Glin + 0.0722 * Blin)
def YtoLstar(Y):
if Y <= (216 / 24389):
return Y * (24389 / 27)
else:
return pow(Y, (1 / 3)) * 116 - 16
return YtoLstar(y)
print(rgb_percent(3, 3,3))