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通道.
提前致谢!!楠
这是一个老问题,但万一其他人偶然发现它:如果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)