归一化图像转uint8保存为npy后,加载显示白屏,求助问题原因
问题原因与解决方法
问题根源
归一化后的图像数值是0到1之间的浮点数,直接调用.astype('uint8')时,numpy会直接截断小数取整——比如0.5、0.999这类值都会变成0,最终整个数组几乎全是0,用plt.imshow显示自然就是空白画布。
正确处理方式
要把0-1的归一化值映射到uint8的0-255合法范围,必须先乘以255再转换类型:
修改你的NormalizeData函数:
def NormalizeData(data): normalized = ((data - np.min(data)) / (np.max(data) - np.min(data))) # 先把0-1的数值映射到0-255区间,再转uint8类型 return (normalized * 255).astype('uint8')
加载显示的注意事项
加载uint8格式的.npy文件时,plt.imshow会默认把0-255的uint8值当作标准图像像素范围处理,直接显示即可:
import matplotlib.pyplot as plt import numpy as np image = np.load("Picture.npy") plt.imshow(image) plt.show()
补充说明
如果是RGB多通道图像,上述代码也能自动对每个通道完成映射转换,无需额外修改。
内容的提问来源于stack exchange,提问作者Alex Horrillo
相关产品推荐
相关产品推荐

