I want to read the alpha channel from a tiff image using Python OpenCV. I am using Enthought Canopy with OpenCV 2.4.5-3 module.
I followed the OpenCV website's tutorial using cv2.imread, but it doesn't seem to work.
What I have now is:
import cv2
image = cv2.imread('image.tif', -1)
Then I used: print (image.shape)
, it still shows the (8192, 8192, 3). But I used Matlab to read the same image, I can see the dimension of this image is (8192, 8192, 4).
I am not sure what should I do to read the alpha channel of this image.
Thanks in advance!! Nan
Can OpenCV read TIFF? So, OpenCV can always read JPEGs, PNGs, and TIFFs.
cv2. imread() method loads an image from the specified file. If the image cannot be read (because of missing file, improper permissions, unsupported or invalid format) then this method returns an empty matrix. Syntax: cv2.imread(path, flag)
OpenCV Python – Read PNG images with Transparency (Alpha) Channel. PNG images usually have four channels. Three color channels for red, green and blue, and the fourth channel is for transparency, also called alpha channel.
This is an old question, but just in case someone else stumbles on it: if img.tiff is a 4-channel TIFF, then
import cv2
img = cv2.imread('img.tiff', cv2.IMREAD_UNCHANGED)
print img.shape
yields (212,296,4) as expected.
If you then use
channels = cv2.split(img)
you can reference the alpha layer (channels[3]
) - for instance, as a mask.
The idea for this was taken from How do I use Gimp / OpenCV Color to separate images into coloured RGB layers? which cleverly uses a fake layer and merge
to enable recovery of the individual RGB layers in their actual colours.
I found a solution this problem in converting the original image to RBGA format through PIL library.
from PIL import Image
import numpy as np
import cv2
path_to_image = 'myimg.png'
image = Image.open(path_to_image).convert('RGBA')
image.save(path_to_image)
image = cv2.imread(path_to_image, cv2.IMREAD_UNCHANGED)
print image.shape
out > (800, 689, 4)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With