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)

【运行结果】

猜你喜欢

转载自blog.csdn.net/C_chuxin/article/details/84001145