1. 程式人生 > >opencv中的cv2.cvtColor()函式中將BGR圖轉換為YCrCb及YCR_CB所使用的公式及程式碼驗證

opencv中的cv2.cvtColor()函式中將BGR圖轉換為YCrCb及YCR_CB所使用的公式及程式碼驗證

【時間】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)

【執行結果】