OpenCV Python 颜色空间
颜色空间是描述如何表示颜色的数学模型。它以特定的、可测量的、固定范围的可能颜色和亮度值来描述。
OpenCV支持以下众所周知的颜色空间:
- RGB颜色空间 -这是一种加法颜色空间。通过组合红、绿和蓝色值来获得颜色值。每个值的范围从0到255。
-
HSV颜色空间 -H、S和V分别代表色调、饱和度和亮度。这是RGB的一种替代色彩模型。该模型应该更接近人眼感知任何颜色的方式。色调值范围从0到179,而S和V数值范围从0到255。
-
CMYK颜色空间 -与RGB相比,CMYK是一种减法颜色模型。英文字母表示青、洋红、黄和黑。白光减去红色得到青色,白光减去绿色得到洋红色,白光减去蓝色得到黄色。所有值都表示在0到100%的范围内。
-
CIELAB颜色空间 -LAB颜色空间有三个分量,分别是L代表亮度,A代表从绿色到洋红的颜色分量,B代表从蓝色到黄色的颜色分量。
-
YCrCb颜色空间 -这里,Cr代表R-Y,Cb代表B-Y。这有助于将亮度从色度分离到不同的通道中。
OpenCV通过 cv2.cvtColor() 函数支持在颜色空间之间进行图像转换。
cv2.cvtColor()函数的命令如下-
cv.cvtColor(src, code, dst)
转换代码
转换由以下预定义的转换代码控制。
序号 | 转换代码和函数 |
---|---|
1 | cv.COLOR_BGR2BGRA 给RGB或BGR图像添加alpha通道。 |
2 | cv.COLOR_BGRA2BGR 从RGB或BGR图像中移除alpha通道。 |
3 | cv.COLOR_BGR2GRAY 在RGB/BGR和灰度之间转换。 |
4 | cv.COLOR_BGR2YCrCb 将RGB/BGR转换为亮度-色度。 |
5 | cv.COLOR_BGR2HSV 将RGB/BGR转换为HSV。 |
6 | cv.COLOR_BGR2Lab 将RGB/BGR转换为CIE Lab。 |
7 | cv.COLOR_HSV2BGR 反向转换HSV至RGB/BGR。 |
示例
下面的程序演示了将原始图像从RGB颜色空间转换为HSV和灰度方案的过程−
import cv2
img = cv2.imread('messi.jpg')
img1 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY )
img2 = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# Displaying the image
cv2.imshow('original', img)
cv2.imshow('Gray', img1)
cv2.imshow('HSV', img2)