将图像从 float32 转换为 uint8 时,蒙版对象消失

Masked object disapear when converting image from float32 into uint8

下面是使用直方图反投影显示检测到的对象的掩码

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

如您所知,此函数接受特定图像类型 ,即 uint8,否则会引发 ans 错误。因此,我使用 imageFloat.astype(np.uint8).

将图像类型从 float32 转换为 uint8

当显示新转换的二进制图像(新 uint8)时,它显示 黑色图像,这意味着检测到的对象不再可见 (零掩码)

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

提前致谢 哈立德

您在转换为 int 之前没有放大图像像素的值,这就是您遇到错误的原因。

这样做:

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