如何在Python OpenCV中读取TIFF图像的alpha通道?

Nan*_* An 9 python opencv alpha channel

我想使用Python OpenCV从tiff图像中读取alpha通道.我正在使用Enthought Canopy和OpenCV 2.4.5-3模块.

我使用cv2.imread跟随OpenCV网站的教程,但它似乎不起作用.

我现在拥有的是:

import cv2
image = cv2.imread('image.tif', -1)
Run Code Online (Sandbox Code Playgroud)

然后我使用:print (image.shape),它仍然显示(8192,8192,3).但是我使用Matlab来读取相同的图像,我可以看到这个图像的尺寸是(8192,8192,4).

我不知道该怎么做才能读取此图像的alpha通道.

提前致谢!!楠

GT.*_*GT. 9

这是一个老问题,但万一其他人偶然发现它:如果img.tiff是一个4通道TIFF,那么

import cv2
img = cv2.imread('img.tiff', cv2.IMREAD_UNCHANGED)
print img.shape 
Run Code Online (Sandbox Code Playgroud)

产率(212296,4)如预期.

如果你然后使用

channels = cv2.split(img)
Run Code Online (Sandbox Code Playgroud)

你可以引用alpha层(channels[3]) - 例如,作为掩码.

这个想法取自我如何使用Gimp/OpenCV Color将图像分成彩色RGB层?巧妙地使用假层并merge使其能够以实际颜色恢复各个RGB层.


小智 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
Run Code Online (Sandbox Code Playgroud)

输出 > (800, 689, 4)