我想使用Python OpenCV从tiff图像中读取alpha通道。我正在使用Enthought Canopy和OpenCV 2.4.5-3模块。
我使用cv2.imread跟随OpenCV网站的教程,但它似乎不起作用。
我现在拥有的是:
import cv2
image = cv2.imread('image.tif', -1)
然后我使用了:print (image.shape)
,它仍显示(8192,8192,3)。但是我使用Matlab来读取相同的图像,我可以看到这个图像的尺寸是(8192,8192,4)。
我不知道该怎么做才能阅读此图片的Alpha通道。
提前致谢!! 南
答案 0 :(得分:8)
这是一个老问题,但万一其他人偶然发现它:如果img.tiff是一个4通道TIFF,那么
import cv2
img = cv2.imread('img.tiff', cv2.IMREAD_UNCHANGED)
print img.shape
按预期收益率(212,296, 4 )。
如果您再使用
channels = cv2.split(img)
您可以引用alpha图层(channels[3]
) - 例如,作为蒙版。
这个想法取自How do I use Gimp / OpenCV Color to separate images into coloured RGB layers?,它巧妙地使用假层和merge
来恢复各个RGB图层的实际颜色。
答案 1 :(得分:1)
我在通过PIL库将原始图像转换为RBGA格式时找到了解决这个问题的方法。
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)
答案 2 :(得分:-1)
我解决了同样的问题:
pip install --upgrade opencv-python