如何将 BGRA 颜色空间内的图像转换为 HSV 并将 BGRA 转换为 YCbCR?我只知道从 BGR 而不是 BGRA 的转换。方法是不同的还是相同的?
hsv_image = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
ycrcb_image = cv2.cvtColor(frame, cv2.COLOR_BGR2YCrCb)
您的帮助将不胜感激。
如何将 BGRA 颜色空间内的图像转换为 HSV 并将 BGRA 转换为 YCbCR?我只知道从 BGR 而不是 BGRA 的转换。方法是不同的还是相同的?
hsv_image = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
ycrcb_image = cv2.cvtColor(frame, cv2.COLOR_BGR2YCrCb)
您的帮助将不胜感激。
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()
打印True
和True
.
BGR 也是一样 -> YCrCb