首先来了解一下opencv提供的API
1 | void cvtColor(InputArray src,OutputArray dst,int code,int dstCn=0); |
paraemters:
- 第一个参数:InputArray类型的src,表示输入的图像矩阵
- 第二个参数:OutputArray类型的dst,表示输出的图像矩阵
- 第三个参数:int类型的code,表示颜色转换标识符
- 第四个参数目标图像的通道数,该参数为0时,目标图像根据源图像的通道数和具体操作自动决定
Note:
第三个参数要根据图像的载入类型进行选择。
在BGR图像与XYZ图像之间的转换,此时的标识code便是
1 | COLOR_BGR2XYZ |
YCrCb颜色空间
该颜色空间广泛的用于视频压缩和图像压缩方案,不能算是纯粹的颜色空间,因为它是BGR颜色空间的一种解码方式。 该颜色空间广泛的应用于MPEG和JPEG等视频和图像压缩方案。
1 | Y表示亮度 |
在BGR图像与YCrCb图像之间的转换,此时的标识code便是
1 | COLOR_BGR2YCrCb |
HSV颜色空间
HSV颜色空间属于面向色度的颜色坐标系的一种,这种颜色模型接近于人类颜色感知的仿真模型,而在其他颜色模型中,例如RGB,一副图像被视为3中基色的叠加。
在BGR图像与YCrCb图像之间的转换,此时的标识code便是
1 | COLOR_BGR2HSV |
GARY色彩空间
gray图像色彩空间就是灰度图像。
在BGR图像与gray图像之间的转换,此时的标识code便是
1 | COLOR_BGR2GRAY |
HLS色彩空间
HLS颜色空间,三个分量分别是色相(H)、亮度(L)、饱和度(S),这三个取值范围是
- 0 <= H <= 360
- 0 <= L <= 1
- 0 <= S <= 1
BGR与HLS图像之间的转换code如下
1 | COLOR_BGR2HLS |
YUV颜色模型中,U、V表示的是色度(Chrominance/Chroma)。YUV是欧洲电视系统所采用的颜色模型(属于PAL制式),颜色被分为一个亮度信号和两个色差信号进行传输
BGR与YUV图像之间的转换code如下:
1 | COLOR_BGR2YUV |
我们来看一个例子:
1 | #include<opencv2/opencv.hpp> |
其结果如下: