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)

输出

RGB 颜色空间

RGB 颜色空间

RGB 颜色空间