我正在科学地使用来自显微镜的图像,其中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通道的最大值)。
知道怎么办吗?
答案 0 :(得分:1)
如果numpy.uint16被cv2.CV_16U替换,也许会有所帮助。 在一些示例中,参数作为字符串传递,例如'UINT16'。
Sry,声誉太低而无法发表评论。
答案 1 :(得分:1)
OpenCV支持写入16位TIFF图像。
确保您使用的是当前版本(> = 2.2)。
在使用OpenCV保存之前,可能会在您的代码中发生截断。