1

如何将 BGRA 颜色空间内的图像转换为 HSV 并将 BGRA 转换为 YCbCR?我只知道从 BGR 而不是 BGRA 的转换。方法是不同的还是相同的?

hsv_image = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
ycrcb_image = cv2.cvtColor(frame, cv2.COLOR_BGR2YCrCb)

您的帮助将不胜感激。

4

1 回答 1

3

HSV 和 YCbCr 都不包含透明平面,因此转换可以用它做的唯一事情就是忽略它。事实证明(在深入研究实现之后),cvtColor对于这些转换方法,接受 3 通道和 4 通道输入图像,并正确忽略第 4 通道(透明度)(如果存在)。

小脚本来验证:

import cv2
a = cv2.imread('car_1.png')
b = cv2.cvtColor(a, cv2.COLOR_BGR2BGRA)
c = b.copy()
c[:,:,3] = 0

aa = cv2.cvtColor(a, cv2.COLOR_BGR2HSV)
bb = cv2.cvtColor(b, cv2.COLOR_BGR2HSV)
cc = cv2.cvtColor(c, cv2.COLOR_BGR2HSV)

print (aa == bb).all()
print (aa == cc).all()

打印TrueTrue.

BGR 也是一样 -> YCrCb

于 2018-03-28T20:00:05.283 回答