【发布时间】:2020-06-13 19:31:17
【问题描述】:
我正在生成点阵的二进制配置,我想将它们保存为黑白图像。我在 Python 3.7 上使用以下代码:
import numpy as np
from matplotlib import pyplot as plt
from PIL import Image
L = 10
s = 2*np.random.randint(2, size=(L, L))-1
s = (s + 1) * 255/ 2
s.astype(np.uint8)
img = Image.fromarray(s, mode = 'L')
plt.imshow(img, cmap='gray')
plt.show()
img.save('test.jpg')
img2 = Image.open('test.jpg').convert('L')
data = asarray(img2).astype(int)
print(data)
这是我生成的随机数组:
[[255. 0. 0. 0. 0. 255. 255. 0. 0. 255.]
[ 0. 0. 0. 255. 0. 255. 0. 0. 255. 0.]
[ 0. 0. 0. 255. 255. 255. 0. 255. 0. 255.]
[255. 255. 255. 255. 255. 255. 0. 255. 255. 255.]
[255. 255. 0. 0. 0. 0. 255. 0. 255. 0.]
[255. 255. 0. 0. 255. 0. 255. 0. 0. 0.]
[ 0. 0. 255. 255. 0. 255. 255. 0. 0. 0.]
[ 0. 255. 0. 255. 0. 255. 255. 0. 255. 0.]
[ 0. 255. 0. 0. 255. 255. 255. 255. 255. 255.]
[ 0. 255. 0. 0. 255. 0. 255. 255. 0. 0.]]
但代码输出的图像与我预期的完全不同。我得到的结果是以下图像,似乎与该数组没有任何关系:
虽然我期待这个
我从 Mathematica 中的数组可视化中得到的。请注意,在代码末尾,我保存并检索图像。当我将它作为数组检索时,我获得了
[[ 0 3 0 11 0 216 106 67 0 3]
[ 0 5 0 10 2 7 7 0 0 1]
[ 2 0 7 0 0 1 0 0 1 0]
[ 10 0 0 3 8 0 8 14 3 3]
[ 0 12 0 21 0 219 111 43 0 0]
[ 4 8 0 206 114 86 0 15 1 1]
[ 0 0 22 0 8 0 0 7 7 0]
[ 6 0 0 9 0 8 6 221 102 81]
[ 0 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0 0 0 0 0 0]]
与原来的数组s完全不同。如果有人能指出我做错了什么,我将不胜感激。
【问题讨论】: