我应该如何将float32图像转换为uint8图像?

时间:2018-11-10 02:56:09

标签: python opencv image-processing

我想使用openCV库在Python中将float32图像转换为uint8图像。我使用了以下代码,但我不知道它是否正确。

Ifloat32图片。

J = I*255
J = J.astype(np.uint8)

如果您能帮助我,我非常感谢。

2 个答案:

答案 0 :(得分:0)

如果您将图像从float32转换为python中的uint8 numpyopencv,则提供了两种便捷的方法。

如果您知道图像的范围在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)