繁体   English   中英

如何将由 0 和 1 组成的数组转换为二进制图像?

[英]How do I convert an array of arrays consisting of 0s and 1s into a binary image?

我正在做一个项目,我必须生成一个随机的二进制图像(即由黑白像素组成的图像 - 1 代表黑色,0 代表白色)。 像这样:

在此处输入图像描述

然后将其转换为 numpy 数组并保存到 txt 文件中,如下所示(截断结果):

[[0 1 0 ... 0 0 1] [1 1 1 ... 0 0 0] [1 0 0 ... 0 1 0] ... [0 1 1 ... 1 0 1] [1 1 0 ... 0 1 1] [0 1 1 ... 0 1 0]]

现在我需要获取该二进制数组并将其转换回上面示例中的图像。 这是我到目前为止用于此操作的代码:

import numpy as np
from PIL import Image as im

array = np.genfromtxt('binary_array.txt', dtype=int)
print(array)
print(array.shape)
data = im.fromarray(array)
data.save('new_img.png')

(我使用打印语句只是为了更好地了解正在发生的事情以及可能缺少的内容)。 不幸的是,我所得到的,是一个黑色的图像。 我确定我在这里遗漏了一些重要的东西,但我似乎什么都想不起来。 谢谢

您还可以将 matplotlib 与裸数组一起使用,而不是 PIL

from matplotlib import pyplot as plt
arr = np.array([[0,0,1,0], [1,0,0,0], [1,0,0,0], 
[0,0,0,0]])
plt.imshow(arr, cmap='gray')
plt.savefig('img.png', cmap='gray')

您可以将此数组计时 255,然后使用Image.fromarray方法将其转换为PIL.Image对象。

from PIL import Image
import numpy as np

rand_array = np.random.randint(low=0, high=2, size=(100, 100), dtype=np.uint8)
im = Image.fromarray(rand_array * 255)
im.show()

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM