提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
OpenCV第五章
色彩空间与通道
一、HSV色彩空间
H(色调)指的是光的颜色。色调在[0,180]中取值。如红色黄色绿色蓝色分别色调值为0,30,60,120.
S(饱和度)指的是色彩的深浅,在[0,255]中取值,饱和度为零是为灰度图像。
V(亮度)指的是光的明暗,也是[0,255]中取值,亮度越大图像越亮,为0时图片为纯黑色。
二、色彩空间转换
dst=cv2.cvtColor(src,code)
dst:转换后的图像
src:转换前的初始图像
code:色彩空间转换码
当code等于cv2.COLOR_BGR2GRAY
BGR色彩空间转换成GRAY色彩空间
以此类推
BGR2HSV即可BGR转换成HSV色彩空间
三、拆分合并通道
使用split()方法可以拆分图像中的通道
import cv2
import numpy as np
img =cv2.imread("1.jpg")
m=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)#转换HSV色彩空间
b,g,r=cv2.split(img)#拆分BGR图像
h,s,v=cv2.split(m)#拆分HSV图像
使用merge()方法合并通道
bgr=cv2.merge([b,g,r])
按照B-G-R的顺序合并后得到图像bgr
对于HSV色彩空间,拆分后改变其中一个通道的值可以得到相当的艺术效果,为了显示艺术效果,需要将合并后的图像转换成BGR色彩空间
import cv2
import numpy as np
img =cv2.imread("1.jpg")
m=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)#转换HSV色彩空间
h,s,v=cv2.split(m)#拆分HSV
s[:,:]=150#调整A通道
anss=cv2.merge([h,s,v])#合并
ans=cv2.cvtColor(anss,cv2.COLOR_HSV2BGR)#转换成bgr
cv2.imshow("show",ans)
cv2.waitKey()
cv2.destroyAllWindows()
结果如下
四、alpha通道
BGR色彩空间的基础上增加一个A(透明度)通道即可得到BGRA色彩空间
取值在[0,255]
0表示透明 255表示不透明
import cv2
import numpy as np
img =cv2.imread("1.jpg")
m=cv2.cvtColor(img,cv2.COLOR_BGR2BGRA)#转换BGRA色彩空间
b,g,r,a=cv2.split(m)#拆分BGRA
a[:,:]=150#调整A通道
anss=cv2.merge([b,g,r,a])#合并得到半透明图片
cv2.imwrite("2s.png",anss)#PNG图像是典型的4通道图像BGRA,于是需要保存为png格式