Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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 -

RGBA Image

like image 746
Anuradha Avatar asked Nov 20 '14 11:11

Anuradha


1 Answers

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.

like image 89
beaker Avatar answered Sep 24 '22 01:09

beaker