购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4-4 拆分色彩通道

4-4-1 拆分BGR图像的通道

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通道内容。

4-4-2 拆分HSV图像的通道

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 通道图像对象。

执行结果 tosMMczORdJ8IIivhVHTLlw+DsyPZ67oQ4cxPmQzfvN0v8EAcQMIFbrNsbNwu/Co

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开