使用Python OpenCV2打开多通道图像

4

我有一张4波段多通道图像(TIF),它是一个无符号的16位图像。我正在使用以下方法:

    opencv2 
    python 

我在代码开头做了以下事情:
    import cv2 

当我使用时,

  i = cv2.imread('img.tif') 

它正在读取所有的四个带,但作为UINT8。当我使用

  i = cv2.imread('img.tif', cv2.CV_16U)

它只读取图像的一个通道。应该怎么做才能读取所有四个16位无符号通道?


2
https://dev59.com/2U_Sa4cB1Zd3GeqP9RzN#9781142 - Tae-Sung Shin
谢谢您的帮助,但我问的是一个与Python相关的问题! - Indian
1个回答

2
尝试传递标志cv2.IMREAD_ANYDEPTH文档指出,此标志将:
如果设置,则在输入具有相应深度时返回16位/32位图像,否则将其转换为8位。
i = cv2.imread('img.tif', flags=cv2.IMREAD_ANYDEPTH)

如果那样不起作用,尝试使用cv2.IMREAD_UNCHANGED标志。虽然没有记录,但看起来它也可以起作用。

不行,这个不起作用。我的图像只加载了一个通道!我已经用Matlab进行了交叉验证,我的图像以UINT16 / 4通道加载。 - Indian
看起来 osgeo 中的 GDAL 在读取图像方面表现更好。 - Indian
@Indian 你试过使用 IMREAD_UNCHANGED 标志吗?这对我很有效。 - Aurelius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接