对一个含Alpha通道的彩色图像,每一个像素是由含4个元素的数组组成,也就是有4个通道,索引3是 A(Alpha) 通道,如下所示:
[B, G, R, A]
如果要读取含Alpha通道的文件,例如,以.png为后缀的文件,cv2.imread( )语法如下(以读取street.png为例):
image = cv2.imread(“street.png”, cv2.IMREAD_UNCHANGED)
程序实例 ch6_8.py: 在本书电子资源的ch6文件夹有street.png文件,这个文件的透明度是32,这个程序会读取street.png,同时显示[10,50]和[50,99]的像素值,然后修改[0,0]至[200,200]间的Alpha值为半透明的 128 ,最后再列出[10,50]和[50,99]的像素值,读者可以比较修改结果。同时将修改结果存入 street128.png 。
执行结果 下列可以看到Alpha通道值修改前与修改后结果。
上图右边是street128.png在Windows窗口打开的结果。
上述几个程序使用循环方式设定某区域的值,坦白来说是中规中矩,灵活应用Python的切片可以让程序简化许多,例如,上述程序第9~11行,可以使用如下含切片的程序代码取代。
img[0:200,0:200,3] = 128
细节可以参考 实例 ch6_8_1.py ,执行结果则存入street128_1.png。