cv2.IMREAD_ANYDEPTH 改变 .tiff 图像的形状

0 投票
1 回答
26 浏览
提问于 2025-04-12 13:31

我想用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)

这样可以保持数据的类型和形状不变。

撰写回答