【问题标题】:Error when transforming numpy array to PIL Image将 numpy 数组转换为 PIL Image 时出错
【发布时间】:2017-08-18 14:42:59
【问题描述】:

我有一个变量 img,它是一个大小为 28x28 的 int64 numpy.array。它的内容是这样的:

[...]
[  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 位像素,黑白)

为什么这段“简单”的代码会出现意想不到的行为?

提前致谢!

【问题讨论】:

  • 输入的数据类型不应该是np.uint8吗?
  • 你是对的!非常感谢(这真的很有意义):)

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-15
    • 2017-06-25
    • 1970-01-01
    • 2017-05-10
    • 2010-09-27
    • 2020-03-20
    • 1970-01-01
    • 2020-02-17
    相关资源
    最近更新 更多