opencv中的cv2.cvtColor()函式中將BGR圖轉換為YCrCb及YCR_CB所使用的公式及程式碼驗證
阿新 • • 發佈:2018-11-17
【時間】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)
【執行結果】