我想在原始位深度中使用 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)
根据各种帖子,这不应该发生。仍然不确定为什么频道会丢失。
似乎使用以下不同的标签可以完全避免这个问题。
im = cv2.imread(image_path, cv2.IMREAD_UNCHANGED)
这保留了 dtype 和形状。