我正在科学地处理显微镜上的图像,其中3个RGB通道中的每一个都被编码为uint16(0-65536)。目前我使用OpenCV2和NumPy来处理图像,并使用“cv2.IMREAD_unchange”标志,所有的读取操作都很好,我可以对图像进行一些处理并将其返回到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通道的最大值)。
知道怎么做吗?
OpenCV确实支持写入16位TIFF图像。
请确保使用的是当前版本(>;=2.2)。
在用OpenCV保存之前,代码中的img可能会发生截断。
如果用cv2.CV u替换numpy.uint16,也许会有帮助。 在某些示例中,参数作为字符串传入,例如“uint16”。
Sry,名声太低了,不能发表评论。
相关问题 更多 >
编程相关推荐