Opencv-python从入门到放弃 —— 颜色通道、色彩空间(6)

自己是一个菜鸡,希望通过写博客的方式提升自己,最近正好接触到了opencv,想把学习路程以博客的形式记录下来,也算是学习opencv的一种动力吧,好吧,话不多说,干就完了!

一、 基础知识

颜色通道
一张彩色图像有三个颜色通道,分别为R、G、B通道。opencv提供了将三个通道的图像拆分以及将三个通道的图像合并的函数,非常方便。
通道拆分:(B, G, R) = cv2.split(image) 得到三张单通道灰度图,没有彩色信息,只有灰度强弱的信息。
通道合并:image = cv2.merge([B, G, R]) 将三个通道的图片合成一张原先的RGB图像。如果说想看到原图绿色通道最真实的颜色怎么办呢,很简单,将另外两个通道设为0矩阵,合并就成了一个RGB图像,此图像只有绿色通道有值,因此就是原图像中真正的绿色通道分量。
颜色空间
除了RGB色彩空间,还有HSV,Lab,YUV色彩空间。
RGB:一般为计算机、电视机色彩显示的方法,该颜色空间最为直观,任何颜色(共有256*256*256种)都能通过R、G、B三色不同分量的相加混合而成。
HSV:更类似于人类感觉颜色的方式,因为Hue(色相),Saturation(饱和度),Value(亮度),人们对待颜色常常在想:这是什么颜色?深浅如何?亮度如何?
YUV:Y是亮度信号,U、V代表两个色度信号,分别描述影像色彩和饱和度。如果只有Y分量,那就是一副黑白图像。YUV与RGB之间两者可以通过特定的公式相互转换。
Lab:这是由国际照明委员会建立起来的,L负责整张图像的明暗度,也就是黑白板。a通道与b通道只负责颜色的多少。Lab与RGB之间也存在相应的转换。
在opencv中颜色空间的转换通过cv2.cvtColor(img, mode)函数实现,mode有很多,前缀为cv2.COLOR_….

二、Demo

IMAGE_PATH = './wave.png'
image = cv2.imread(IMAGE_PATH)
cv2.imwrite('image_src.jpg', image)
# 颜色通道分离
(B, G, R) = cv2.split(image)
cv2.imwrite('Blue.jpg', B)    # 注意顺序为B、G、R 图片主调颜色为蓝色,所以蓝色通道的图像肯定最亮\
cv2.imwrite('Green.jpg', G)
cv2.imwrite('Red.jpg', R)    # 图片上就没什么红色,因此红色通道的图像肯定最暗
# 观察R,G,B三通道图像的真实色彩
zeros = np.zeros(image.shape[:2], dtype='uint8') # 注意是单通道图像,千万不能写image.shape,那就是三通道图像了
actual_B = cv2.merge([B, zeros, zeros])  # 绿色通道,注意B与两个zeros矩阵的顺序噢,一定不能错~
actual_G = cv2.merge([zeros, G, zeros])
actual_R = cv2.merge([zeros, zeros, G])
cv2.imwrite('actualb.jpg', actual_B)
cv2.imwrite('actualg.jpg', actual_G)
cv2.imwrite('actualr.jpg', actual_R)
# 色彩空间
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)  # 转到HSV颜色空间
cv2.imwrite('hsv.jpg', hsv)
lab = cv2.cvtColor(image, cv2.COLOR_BGR2Lab)  # 转到Lab颜色空间
cv2.imwrite('lab.jpg', lab)
yuv = cv2.cvtColor(image, cv2.COLOR_BGR2YUV)  # 转到YUV颜色空间
cv2.imwrite('yuv.jpg', yuv)

运行结果:
image_src.jpgBlue.jpgGreen.jpgRed.jpg
actualb.jpgactualg.jpgactualr.jpghsv.jpglab.jpgyuv.jpg

三、总结

  1. RGB图像的颜色通道的分离产生三张灰度图像,分别代表了R、G、B图像分量的信号强弱,也可以通过颜色通道的合并产生一副彩色图像。
  2. 除了RGB颜色空间还有很多非常有用的颜色空间,比如Lab、HSV,YUV等,这部分内容并没有详解,也没必要详解,知道有这么回事就行了,以后真的用到了再查就好了。
  3. 加油。

猜你喜欢

转载自blog.csdn.net/Annihilation7/article/details/82557000