我想使用openCV库在Python语言中将float32图像转换为uint8图像。我使用了以下代码,但我不知道它是否正确。
这里的I是float32镜像。
J = I*255
J = J.astype(np.uint8)如果你能帮助我,我将不胜感激。
发布于 2018-11-10 13:19:52
如果您想要将图像从单精度浮点(即float32)转换为uint8,python中的numpy和opencv提供了两种方便的方法。
如果你知道你的图像的范围在0到255之间,或者在0到1之间,那么你可以简单地按照你已经做的方式进行转换:
I *= 255 # or any coefficient
I = I.astype(np.uint8)如果您不知道范围,我建议您应用最小最大归一化,即:(value - min) / (max - min)
使用opencv,您只需调用以下指令:
I = cv2.normalize(I, None, 0, 255, cv2.NORM_MINMAX, cv2.CV_8U)返回的变量I类型的类型为np.uint8 (由最后一个参数指定),范围在0到255之间。
使用numpy,您还可以编写类似的代码:
def normalize8(I):
mn = I.min()
mx = I.max()
mx -= mn
I = ((I - mn)/mx) * 255
return I.astype(np.uint8)https://stackoverflow.com/questions/53235638
复制相似问题