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)
转换代码
转换由以下预定义的转换代码控制。
序号 | 转换代码 & Function |
---|---|
1 | cv.COLOR_BGR2BGRA 将 alpha 通道添加到 RGB 或 BGR 图像。 |
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)