OpenCV在BGR的色彩空间,除了有B、G、R通道外,另外增加了 A 通道 ( 又称 Alpha 通道 ) ,这个A通道就是 透明度 ,A的值是0~255,如果A的值是0代表完全透明,如果A的值是255代表完全不透明。如果文件后缀为.png,就是一个典型的拥有A通道的图像。
拥有A通道的BGR色彩空间称为 BGRA 色彩空间 ,OpenCV在读取图像后所得的是BGR对象,假设是image,可以使用下列方式将image图像对象由BGR色彩转换为BGRA色彩。
bgra_image = cv2.cvtColor(image, cv2.COLOR_BGR2BGRA)
程序实例 ch4_15.py: 显示原图像,将BGR图像转换为BGRA图像同时显示Alpha通道值和图像,接着分别将BGRA图像转换为alpha=32和alpha=128,然后显示以及存储至a32_image和a128_image。
执行结果
从执行结果可以看出BGR转换成BGRA后的alpha值是255。
从上述执行结果还可以看出,原始图像与a32_image、a128_image彼此没有差异,可是在第23行和第24行分别以a32.png和a128.png存储文件,如果打开可以得到下图所示的透明图像。
习题
1.读取coffee.jpg,然后使用4种方式显示图像,其中两项分别是BGR和RGB,如下图所示。
另外两种方式分别是HSV的S通道和V通道,如下图所示。
2.重新设计ch4_11.py,使用 S→V→H 和 V→H→S 顺序合并图像,分别列出执行结果。