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)

输出

RGB Color Space

RGB Color Space

RGB Color Space
广告