0 引言
常见的彩色图像的颜色表示为RGB值。在图像处理中,在某些特定应用中,图像在其他色彩空间表示比RGB格式更方便、更合适。因此,常常需要色彩空间之间的转换。
1 图像色彩空间转换
色彩空间转换函数 -cvtColor()
COLOR_BGR2GRAY = 6 彩色到灰度
COLOR_GRAY2BGR = 8 灰度到彩色
COLOR_BGR2HSV = 40 BGR到HSV
COLOR_HSV2BGR = 54 HSV到BRG
COLOR_BGR2RGB BGR到RGB
![9efff3b84d735a8a9318f4b4284826a1.png](https://i-blog.csdnimg.cn/blog_migrate/63596a2574cfa7277cec50f73f6f5a6b.jpeg)
图1 示例图像
import cv2 as cvsrc = cv.imread('./IMG_Data/test_img.jpg')cv.imshow('Raw image',src)gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)cv.imshow('gray img',gray)HSV = cv.cvtColor(src,cv.COLOR_BGR2HSV)cv.imshow('HSV img',HSV)RGB = cv.cvtColor(src, cv.COLOR_BGR2RGB)cv.imshow('RGB img', RGB)cv.waitKey(0)cv.destroyAllWindows()
![4bb814ff44ad4f3b22207a3c4ad8c341.png](https://i-blog.csdnimg.cn/blog_migrate/0b955df29200b523537d0019c3f28291.jpeg)
图2 OpenCV色彩空间转换图像
- 使用matplotlib 库 展示图像
from matplotlib import pyplot as pltimport cv2 as cv src = cv.imread('./IMG_Data/test_img.jpg') #此语句读取原图像RGB = cv.cvtColor(src, cv.COLOR_BGR2RGB)plt.imshow(RGB)plt.xticks([]),plt.yticks([]) #隐藏Matplotlib中默认的坐标轴线plt.show()cv.imwrite('test_img_png.png',RGB)
注意:彩色图像使用OpenCV 加载时是BGR 模式。但是Matplotib 是RGB模式。所以彩色图像如果已经被OpenCV 读取,那它将不会被Matplotib 正确显示。详细可以查看前期文章 前期文章
![219b38413fb2b5ffe8e5008ce8979da1.png](https://i-blog.csdnimg.cn/blog_migrate/537a661fbfca9a4c96424acb25839ed2.jpeg)
图3