首页 > 解决方案 > 将图像从 float32 转换为 uint8 时,蒙版对象消失

问题描述

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

漂浮

图像的类型为 float32,由算法的输出产生。我想使用cv2.findContours函数检测轮廓。

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

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

黑色的

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

提前感谢哈立德

标签: pythonnumpyopencvimage-processingmask

解决方案


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

做这个:

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

推荐阅读