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

时间:2013-08-01 11:29:22

标签: 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 )

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

知道怎么办吗?

2 个答案:

答案 0 :(得分:1)

如果numpy.uint16被cv2.CV_16U替换,也许会有所帮助。 在一些示例中,参数作为字符串传递,例如'UINT16'。

Sry,声誉太低而无法发表评论。

答案 1 :(得分:1)

OpenCV支持写入16位TIFF图像。

确保您使用的是当前版本(> = 2.2)。

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