问题1:保存不成功:数据类型不匹配
原因分析:cm是通过torch.argmax(prob, dim=1)生成的标签图,其值为int64类型。
PIL的Image.fromarray要求数据类型为uint8(如灰度图)或uint8的RGB数组,而int64不在支持列表中。
可能存在的其他问题:图像形状或范围问题,如果cm的值范围超出 [0, 255],或形状不符合图像格式(如非二维/三维数组),也会导致保存失败
解决办法:转换数据类型为uint8(在保存前将cm强制转换为uint8类型,并确保值在 [0, 255] 范围内:)
问题2:数据范围在[0,1]之间,对比度较低,保存结果图为黑色
解决办法:优化cm.png的对比度
在保存cm
前,扩展其动态范围到0-255:
cm = torch.argmax(prob, dim=1)[0].cpu().numpy()
cm = (cm * 255).astype(np.uint8) # 假设cm是二分类(0/1)
或者归一化到全范围:
cm = ((cm - cm.min()) / (cm.max() - cm.min()) * 255).astype(np.uint8)
imsave(“cm.png”, cm)
解决!!!