- OpenCV Python 教程
- OpenCV Python - 首页
- OpenCV Python - 概述
- OpenCV Python - 环境配置
- OpenCV Python - 读取图像
- OpenCV Python - 写入图像
- OpenCV Python - 使用 Matplotlib
- OpenCV Python - 图像属性
- OpenCV Python - 按位运算
- OpenCV Python - 形状和文本
- OpenCV Python - 鼠标事件
- OpenCV Python - 添加轨迹条
- OpenCV Python - 缩放和旋转
- OpenCV Python - 图像阈值
- OpenCV Python - 图像滤波
- OpenCV Python - 边缘检测
- OpenCV Python - 直方图
- OpenCV Python - 颜色空间
- OpenCV Python - 图像变换
- OpenCV Python - 图像轮廓
- OpenCV Python - 模板匹配
- OpenCV Python - 图像金字塔
- OpenCV Python - 图像加法
- OpenCV Python - 图像混合
- OpenCV Python - 傅里叶变换
- OpenCV Python - 捕捉视频
- OpenCV Python - 播放视频
- OpenCV Python - 从视频中提取图像
- OpenCV Python - 从图像生成视频
- OpenCV Python - 人脸检测
- OpenCV Python - 均值漂移/CamShift
- OpenCV Python - 特征检测
- OpenCV Python - 特征匹配
- OpenCV Python - 数字识别
- OpenCV Python 资源
- OpenCV Python - 快速指南
- OpenCV Python - 资源
- OpenCV Python - 讨论
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)