我有一个img
变量int64 numpy.array
,大小为28x28。其内容如下:
[...]
[ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 68 154 188 176 254 254 254 254 254
227 106 17 0 0 0 0 0 0 0]
[...]
我想将数组转换为PIL图像。为此,我打电话给img = Image.fromarray(img, mode='L')
,但我得到的输出只有0,而很明显它不应该是那样的。我检查了mode
选项,看起来L是正确的。还检查了stackoverflow中的其他答案,但无法找到能够重现此特定问题的内容。
L(8位像素,黑白)
为什么这个"简单"一段代码给出了意想不到的行为?
提前致谢!
答案 0 :(得分:1)
正如@Divakar指出的那样,数据类型并不一致。
只需添加np.uint8()
即可:
img = Image.fromarray(np.uint8(img), mode='L')