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



我有一个可变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 是正确的。还检查了堆栈溢出中的其他答案,找不到重现此特定问题的内容。

L(8 位像素,黑白(

为什么这段"简单"的代码被赋予了意想不到的行为?

提前感谢!

正如@Divakar所指出的,数据类型是不连贯的。

只需添加np.uint8()它就可以工作:

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

最新更新