Python:如何使用16位通道保存图像(例如48 RGB)?

Hap*_*ppy 5 python opencv

我正在科学地使用显微镜中的图像,其中3个RGB通道中的每一个都被编码为uint16(0-65536).目前我使用OpenCV2和NumPy来处理图像,并使用标志"cv2.IMREAD_UNCHANGED"一切都可以正常阅读,我可以对图像做一些工作并将其返回到uint16,

img = cv2.imread('dummy.tif',cv2.IMREAD_UNCHANGED )
#do some work here
img = img.astype(numpy.uint16)
cv2.imwrite('processed.tif',img )
Run Code Online (Sandbox Code Playgroud)

但是,到目前为止,我似乎无法找到任何方法将处理后的图像再次保存为16位RGB.使用cv2.imwrite命令只需将图像转换为uint8,从而将所有内容都变为白色(即,所有内容都被截断为255,uint8通道的最大值).

知道怎么办吗?

w-m*_*w-m 2

OpenCV 支持写入 16 位 TIFF 图像。

确保您使用的是最新版本 (>= 2.2)。

在使用 OpenCV 保存之前,代码中的 img 可能会发生截断。