我有一个可变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')