如何在Python中将黑白数组转换为图像?
我有一个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)