cv2.IMREAD_ANYDEPTH 改变 .tiff 图像的形状
我想用cv2打开一张图片,保持原来的位深度,然后把颜色通道分开来分析。使用cv2.IMREAD_ANYDEPTH这个标签可以做到,但会改变im.shape的形状。这是怎么回事,我该怎么避免这种情况?我是在Colab上操作的。
import cv2
im = cv2.imread(image.tiff)
print(im.dtype)
print(im.shape)
im = cv2.imread(image.tiff, cv2.IMREAD_ANYDEPTH)
print(im.dtype)
print(im.shape)
输出结果:
uint8
(957, 641, 3)
uint16
(957, 641)
根据很多帖子,这种情况不应该发生。不过我还是不明白为什么会丢失颜色通道。
1 个回答
0
看起来这个问题可以通过使用下面这种不同的标签完全避免。
im = cv2.imread(image_path, cv2.IMREAD_UNCHANGED)
这样可以保持数据的类型和形状不变。