我想使用openCV库在Python中将float32
图像转换为uint8
图像。我使用了以下代码,但我不知道它是否正确。
I
是float32
图片。
J = I*255
J = J.astype(np.uint8)
如果您能帮助我,我非常感谢。
答案 0 :(得分:0)
如果您将图像从float32转换为python中的uint8 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)
返回的我将已经具有类型np.uint8
,范围在0到255之间
使用numpy
也可以编写类似的内容:
def norm8(I):
mn = I.min()
mx = I.max()
mx -= mn
I = (I - mn)/mx
return I.astype(np.uint8)
答案 1 :(得分:0)
实际上非常简单。 img_uint8 = img_float32.astype(np.uint8)