将numpy数组转换为PIL图像时出错

时间:2017-08-18 14:43:00

标签: python python-3.x numpy python-imaging-library

我有一个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位像素,黑白)

为什么这个"简单"一段代码给出了意想不到的行为?

提前致谢!

1 个答案:

答案 0 :(得分:1)

正如@Divakar指出的那样,数据类型并不一致。

只需添加np.uint8()即可:

img = Image.fromarray(np.uint8(img), mode='L')