OpenCV提供的 split( ) 函数可以拆分BGR图像对象的色彩通道,成为 B 通道 图像对象、 G 通道 图像对象和 R 通道 图像对象,语法如下:
blue, green, red = cv2.split(bgr_image)
上述参数 bgr_image 是BGR图像对象,等号左边 blue, green, red 内容分别如下:
blue :返回 B 通道图像对象。
green :返回 G 通道图像对象。
red :返回 R 通道图像对象。
程序实例 ch4_7.py: 有一幅图像colorbar.jpg,如下图所示,请分别显示此图像以及所拆分的通道图像。
执行结果
读者可能觉得奇怪,为何拆分出来的通道颜色已经失去了原先的蓝色、绿色、红色,这是因为拆分出来的B、G、R是单通道(可以从第11行的打印B通道属性结果得知是单通道),第13行可以得到B通道内容是255,所以得到的通道图像是白色。至于G通道与R通道概念可以以此类推。
注 :因为打印结果只显示左右各3字节的值,所以无法看到此通道内容值是255。
程序实例 ch4_8.py: 使用mountain.jpg取代colorbar.jpg,重新设计ch4_7.py,这个实例同时验证所拆分的图像是单通道,所得图像以灰度显示。
执行结果 从下列内容可以看出BGR图像是3个通道,其他皆是1个通道。
上述B、G、R通道图像由于是单通道,所以结果呈现灰度显示。同时因为通道值的内容不同,所以呈现不同的灰度效果。
程序实例 ch4_8_1.py: 验证BGR通道有不同的内容,因此图像呈现不同的灰度效果。
执行结果 省略绘制图像,只显示B、G、R通道内容。
OpenCV提供的 split( ) 函数也可以拆分HSV图像对象的色彩通道,成为 Hue 通道 图像对象、 Saturation 通道 图像对象和 Value 通道 图像对象,语法如下:
hue, saturation, value = cv2.split(hsv_image) # 参数是HSV图像对象
上述相关语法可以参考4-4-1节。
程序实例 ch4_9.py: 打印mountain.jpg,然后将此BGR图像对象转换成HSV图像对象,然后拆分HSV图像对象,最后列出拆分后的 Hue 通道图像对象、 Saturation 通道图像对象、 Value 通道图像对象。
执行结果