使用OpenCV Python为单色图像添加Alpha通道

5

我一直在处理彩色图像(RGB)和带有alpha通道的彩色图像(RGBA)。从RGBA图像中读取alpha通道非常容易,我甚至可以分离图像的4个通道。有没有办法将alpha通道添加到单色或灰度图像中?另外,是否可以单独将alpha通道添加到R、G、B通道中?

我用来读取透明图像并分离通道的代码如下 -

import cv2
img = cv2.imread(image1_path,-1)

b = img[:,:,0]
g = img[:,:,1]
r = img[:,:,2]
a = img[:,:,3]

img_merge = cv2.merge((b,g,r,a))
cv2.imshow("img_merge",img_merge)

cv2.imshow("r channel",r)
cv2.imshow("g channel",g)
cv2.imshow("b channel",b)
cv2.imshow("a channel",a)
cv2.waitKey(0)
cv2.destroyAllWindows()

我正在使用的图像是 -

RGBA图像


(注:该图片是一张RGBA图像)
1个回答

5

您不能创建一个2通道的“亮度-透明度”图像,但是您可以通过复制灰度通道并添加alpha通道来将1通道的灰度图像转换为BGRA,只需使用灰度值即可。假设 l 是灰度图像:

img_3gray = cv2.merge((l,l,l,a))

您不能将alpha通道应用于图像的某个通道,但是您可以像之前一样将图像的单个通道(例如蓝色)转换为灰度图像:

img_3blue = cv2.merge((b,b,b,a))

或者,您可以仅显示带有 alpha 的蓝色通道:

img_bzz = cv2.merge((b,z,z,a))

其中z为全零。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接