我想在将图像保存为PNG文件之前更改其背景并添加alpha通道。
imshow
展示了图像,但是imwrite
却写入了一个空白的图像。合并后的维度也是正确的,即当我打印img_a.shape
时,合并后的图像具有(x,y,4)
。
图像深度为uint8
。我尝试将其更改为float32
,然后除以255
,但似乎没有效果。我可能遗漏了一些基础知识。
我应该怎么做才能让imwrite
正确地写入带有alpha通道的PNG?我尝试了cv2.merge
和np.dstack
,但imwrite
仍无法写入。在使用gimp打开它时,只显示了一个图层。
以下是我的代码:
imgo = cv2.imread('PCP_1.jpg')
image = cv2.GaussianBlur(imgo, (5, 5), 0)
r = image.shape[0]
c = image.shape[1]
shp = (r,c,1)
c_red, c_green, c_blue = cv2.split(image)
#c_red = c_red.astype(np.float32)
#c_green =c_green.astype(np.float32)
#c_blue = c_blue.astype(np.float32)
alphachn = np.zeros(shp)
#alphachn = alphachn.astype(np.float32)
img_a = cv2.merge((c_red, c_green, c_blue, alphachn))
#img_a = np.dstack( (imgo, np.zeros(shp).astype(np.uint8) ) )
print img_a.shape
cv2.imshow('image', img_a)
cv2.imwrite('image_alpha.png', img_a)
k = cv2.waitKey(0)