在网络训练中,发现生成的图像不对劲,如下面左图所示,文字完全不对。后来发现,是因为在python中把float类型的变量直接转成uint8的时候,负数部分就变成了极大的整数,变成了图中的白点。应该是采用截断的方法,把小于0大于255的都截断,然后再转换成uint8。得到的结果如右图所示。
一段验证性的代码,如果把a转成uint8,我们会发现-5就变成了(256-5)=251,而300就变成了(300-256)=44。所谓白色的地方出现了黑点,而黑字上也有了白点。
import numpy as np a = [-5, -10, 240, 300] a = np.reshape(a,[4,1]) b = a.astype(np.uint8)
print(a) [[ -5] [-10] [240] [300]] print(b) [[251] [246] [240] [ 44]]