2013-08-01 239 views
2

我正在从显微镜的图像科学地工作,其中3个RGB通道的每一个都编码为uint16(0-65536)。目前我使用OpenCV2和NumPy的与图像工作,并使用标志“cv2.IMREAD_UNCHANGED”一切正常与读取,我可以做在图像上的一些工作,并返回到UINT16,Python:如何用16位通道保存图像(例如48 RGB)?

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通道的最大值)。

任何想法如何进行?

回答

1

OpenCV支持写入16位TIFF图像。

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

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

+0

你是100%正确的 - 我不小心将我的图像保存为.bmp,因此丢失了16位...愚蠢的错误=) – Bjarke

1

也许它有帮助,如果numpy.uint16被cv2.CV_16U取代。 在一些示例中,参数作为字符串传入,例如'UINT16'。

Sry,声誉太低的评论。

相关问题