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

2024-04-25 12:53:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用Python OpenCV从tiff图像中读取alpha通道。我用的是带OpenCV 2.4.5-3模块的热顶篷。

我使用cv2.imread遵循了OpenCV网站的教程,但似乎不起作用。

我现在拥有的是:

import cv2
image = cv2.imread('image.tif', -1)

然后我使用:print (image.shape),它仍然显示(81928192,3)。但是我用Matlab读取了同样的图像,我可以看到这个图像的维数是(819281924)。

我不知道该怎么读这张图片的alpha通道。

提前谢谢!! 南


Tags: 模块图像imageimportalpha网站教程cv2
3条回答

我在通过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

输出(800、689、4)

这是一个老问题,但只是为了防止别人发现:如果img.tiff是一个4通道tiff,那么

import cv2
img = cv2.imread('img.tiff', cv2.IMREAD_UNCHANGED)
print img.shape 

收益率(212296,4)如预期。

如果你使用

channels = cv2.split(img)

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

这个想法来自How do I use Gimp / OpenCV Color to separate images into coloured RGB layers?,它巧妙地使用了一个假层和merge来恢复实际颜色的各个RGB层。

我解决了同样的问题:

pip install --upgrade opencv-python

相关问题 更多 >

    热门问题