【图像处理】OpenCV+Python图像处理入门教程(三)色彩空间
? ? ? ?这篇随笔介绍使用OpenCV进行图像处理的第三章 色彩空间。 3? 色彩空间 ? ? ? ?之前的介绍,大多是基于BGR色彩空间进行的,但针对不同的实际情况,研究人员提出了许多色彩空间,它们都有各自擅长处理的领域。所以,我们需要学习如何对不同色彩空间的图像进行转换映射。 3.1 ?色彩空间及类型转换函数 (一)色彩空间 ? ? ? ?常见的色彩空间有GRAY色彩空间、HSV色彩空间、YCrCb色彩空间、CMYK色彩空间、XYZ色彩空间、YUV色彩空间等(颜色模型)。 我们只展示出GRAY灰度模型转换为RGB颜色模型的方式: Gray=0.299R+0.587G+0.114B 以后需要用到其他哪种颜色模型之间的转化,百度即可(手动狗头) (二)类型转换函数 ? ? ? ?OpenCV提供了不同色彩空间进行转化的函数语法,如下: dst=cv2.cvtColor(src,code [,dstCn])
其中,dst表示输出图像,src表示输入图像,code是色彩空间转换代码(枚举值太多,百度可得),dstCn是图像的通道数(不写默认为自动获得)。 ? 3.2 ?类型转换实例 ? ? ? ?本节通过一个实例的代码,展示cv2.cvtColor()函数的用法及功能。 实例:将BGR模式转换为灰度图像,再将灰度图像转换为RGB模式。 1 #将BGR模式转换为灰度图像,再将灰度图像转换为RGB模式
2 import cv2
3 numpy as np
4 bgr=np.random.randint(0,256,size=[2,4,3],dtype=np.uint8) 生成2×4×3的BGR图像
5 gray=cv2.cvtColor(bgr,cv2.COLOR_BGR2GRAY) BGR图像转换为灰度图像
6 rgb=cv2.cvtColor(gray,cv2.COLOR_GRAY2RGB) 灰度图像转换为RGB图像
7 print('bgr=n',bgr)
8 gray=n9 rgb=n',rgb)
? 3.3 ?HSV色彩空间应用 ? ? ? ?实际中,我们经常使用HSV色彩空间来感知色调、饱和度、亮度。 色调(Hue):取值范围是[0,360] 饱和度(Saturation):取值范围是[0,1] 亮度(Value):取值范围是[0,1] 下面我们通过两个举例,来学习HSV色彩空间的代码及功能。 举例一:在OpenCV中测试BGR图像的不同颜色变换到HSV色彩空间后,各个分量的值。 1 在OpenCV中测试BGR图像的不同颜色变换到HSV色彩空间后,各个分量的值 2 3 4 ------------测试OpenCV中蓝色分量的值----------- 5 imgBlue=np.zeros([1,1,dtype=np.uint8) 6 imgBlue[0,0]=255 0号通道代表蓝色 7 Blue=imgBlue 8 BlueHSV=cv2.cvtColor(Blue,cv2.COLOR_BGR2HSV) BGR模式的蓝色变换到HSV色彩空间 9 Blue=n10 BlueHSV=n11 ------------测试OpenCV中绿色分量的值----------- 12 imgGreen=np.zeros([1,1)">13 imgGreen[0,1]=255 1号通道代表绿色 14 Green=imgGreen 15 GreenHSV=cv2.cvtColor(Green,1)">BGR模式的绿色变换到HSV色彩空间 16 Green=n17 GreenHSV=n18 ------------测试OpenCV中红色分量的值----------- 19 imgRed=np.zeros([1,1)">20 imgRed[0,2]=255 2号通道代表红色 21 Red=imgRed 22 RedHSV=cv2.cvtColor(Red,1)">BGR模式的红色变换到HSV色彩空间 23 Red=n24 RedHSV=n举例二:调整HSV色彩空间内V通道的值,观察其处理结果。 |