将黑白数组转换为python中的图像?

时间:2014-04-07 01:05:34

标签: python arrays image-processing numpy python-imaging-library

我有一个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 个答案:

答案 0 :(得分:9)

首先,您应该将数组设置为50x50而不是1d数组:

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

然后,要获得标准的8位图像,您应该使用无符号的8位整数dtype:

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

但您不希望True1,您希望它们为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)