将图像从 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)
下面是使用直方图反投影显示检测到的对象的掩码
图像的类型为 float32,这是算法输出的结果。我想使用 cv2.findContours
函数检测轮廓。
如您所知,此函数接受特定图像类型 ,即 uint8,否则会引发 ans 错误。因此,我使用 imageFloat.astype(np.uint8)
.
当显示新转换的二进制图像(新 uint8)时,它显示 黑色图像,这意味着检测到的对象不再可见 (零掩码)
所以我的问题是:有人知道为什么会发生这种情况以及我做错了什么吗?
提前致谢 哈立德
您在转换为 int 之前没有放大图像像素的值,这就是您遇到错误的原因。
这样做:
imageFloat *= 255
imageFloat.astype(np.uint8)