将图像从float32转换为uint8

时间:2020-09-21 10:19:32

标签: python numpy opencv image-processing mask

下面的遮罩是通过使用直方图反向投影来显示检测到的对象的蒙版

float

图像的类型为float32,该类型是算法输出的结果。我想使用cv2.findContours函数检测轮廓。

如您所知,此函数接受某个图像类型 uint8 ,否则会引发错误。因此,我使用imageFloat.astype(np.uint8)将图像类型从float32转换为uint8。

在显示新的转换后的二进制图像(新的uint8)时,它会显示黑色图像,这表示不再可见 (零遮罩)

black

所以我的问题是:有人知道为什么会发生这种情况以及我在做什么错吗?

预先感谢 哈立德

1 个答案:

答案 0 :(得分:2)

在转换为int之前,您没有按比例放大图像像素的值,这就是您面临错误的原因。

执行此操作:

imageFloat *= 255
imageFloat.astype(np.uint8)