如何在Python中将黑白数组转换为图像?

7 投票
1 回答
19447 浏览
提问于 2025-04-18 01:39

我有一个50x50的数组,每个元素要么是True,要么是False,这个数组代表了一幅50x50的黑白图像。

我不知道怎么把它转换成图像?我试过很多不同的函数,但都没用。

import numpy as np
from PIL import Image

my_array = np.array([[True,False,False,False THE DATA IS IN THIS ARRAY OF 2500 elements]])

im = Image.fromarray(my_array)

im.save("results.jpg")

^ 这个函数给我的错误是:“无法处理这种数据类型”。

我看到PIL有一些函数,但它们只能转换RGB像素的列表,而我只有一个简单的黑白数组,没有其他的颜色通道。

1 个回答

14

首先,你应该把你的数组改成50x50的形式,而不是一维数组:

my_array = my_array.reshape((50, 50))

然后,为了得到一个标准的8位图像,你应该使用无符号8位整数的数据类型:

my_array = my_array.reshape((50, 50)).astype('uint8')

不过,你不想让True变成1,你希望它们变成255

my_array = my_array.reshape((50, 50)).astype('uint8')*255

最后,你可以把它转换成PIL图像:

im = Image.fromarray(my_array)

我会把这些步骤一次性做完,像这样:

im = Image.fromarray(my_array.reshape((50,50)).astype('uint8')*255)

撰写回答