【时间】2018.11.13
【题目】opencv中的cv2.cvtColor()函数中将BGR图转换为YCrCb及YCR_CB所使用的公式及代码验证
概述
在opencv中,可以使用cv2.cvtColor()函数将BGR图转换为YCrCb及YCR_CB,本文主要讲述他们所使用的由BGR转换的公式并用代码进行验证。
一、cv2.COLOR_BGR2YCR_CB以及cv2.COLOR_BGR2YCrCb
1.1 使用的转换公式
#BGR---》YCrCb
-
Y’ = 0.257*R' + 0.504*G' + 0.098*B' + 16
-
Cb' = -0.148*R' - 0.291*G' + 0.439*B' + 128
-
Cr' = 0.439*R' - 0.368*G' - 0.071*B' + 128
-
R' = 1.164*(Y’-16) + 1.596*(Cr'-128)
-
G' = 1.164*(Y’-16) - 0.813*(Cr'-128) - 0.392*(Cb'-128)
-
B' = 1.164*(Y’-16) + 2.017*(Cb'-128)
1.2 验证
【代码】
import cv2
import numpy as np
img = np.arange(200,227,dtype= np.uint8).reshape((3,3,3))
b,g,r = cv2.split(img)
YCrCb = cv2.cvtColor(img,cv2.COLOR_BGR2YCR_CB)
#YCrCb = cv2.cvtColor(img,cv2.COLOR_BGR2YCrCb)
Y,Cr,Cb = cv2.split(YCrCb)
Y1 = 0.299*r + 0.587*g + 0.114*b
Cr1 = 0.5*r - 0.4187*g - 0.0813*b + 128
Cb1 = -0.1687*r - 0.3313*g + 0.500*b+ 128
print(Y-Y1)
print(Cb-Cb1)
print(Cr-Cr1)
【运行结果】