python将png图片透明背景转换为白色
最近进行网络图片爬虫创建数据集,发现收集的图片格式不同,有jpg,png,gif等格式,然而png格式的图片背景为透明的,对后续二值化处理有影响。
导致大量的数据都是全黑,用opencv读取也是不显示,又不能舍弃,所以就将png格式的图片背景填充为白色。具体代码如下:
def transparence2white(img):sp=img.shape # 获取图片维度width=sp[0] # 宽度height=sp[1] # 高度for yh in range(height):for xw in range(width):color_d=img[xw,yh] # 遍历图像每一个点,获取到每个点4通道的颜色数据if(color_d.size != 4: #如果图片只有三个通道,也是可以正常处理continueif(color_d[3] ==0): # 最后一个通道为透明度,如果其值为0,即图像是透明img[xw,yh]=[255,255,255,255] # 则将当前点的颜色设置为白色,且图像设置为不透明return img
在进行图片二值化之前先用上述代码处理,就可以正常显示图片了。
当然,如果不嫌麻烦,可以用画图工具打开,然后保存,也相当于添加了白色背景。