Adding an alpha channel to a Monochrome Image using Open CV Python

爷,独闯天下 提交于 2019-11-29 21:16:40

问题


I have been working on colour images(RGB) and color images with an alpha channel(RGBA) . Reading an alpha channel from an RGBA image is pretty easy and I can even split the 4 channels of the image. Is there any method by which I can add an alpha channel to a monochrome or a grayscale image? Also, can alpha channel be separately added to the R,G,B Channels individually ?

The code I am using to read a transparent image and split the channels is as follows -

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()

The image I am using is -


回答1:


You cannot create a 2-channel "luminance-alpha" image, however you can convert the 1-channel grayscale image to BGRA using only gray values by duplicating the grayscale channel and adding the alpha channel to that. Let l be the grayscale image:

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

Nor can you apply an alpha channel to just one channel of an image, but you can take a single channel of the image (say, blue) and turn it into a grayscale image as we did before:

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

or you can display only the blue channel with alpha:

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

where z is all zeroes.



来源:https://stackoverflow.com/questions/27037987/adding-an-alpha-channel-to-a-monochrome-image-using-open-cv-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!