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

在python中将黑白数组转换为图像?,python,arrays,image-processing,numpy,python-imaging-library,Python,Arrays,Image Processing,Numpy,Python Imaging Library,我有一个50x50元素的数组,每个元素要么为真,要么为假——这表示一个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("

我有一个50x50元素的数组,每个元素要么为真,要么为假——这表示一个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像素列表,我有一个简单的黑白阵列,没有其他通道。

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

my_array = my_array.reshape((50, 50))
然后,要获得标准的8位映像,应使用无符号8位整数数据类型:

my_array = my_array.reshape((50, 50)).astype('uint8')
但是您不希望
True
s为
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)

澄清一下:如果你有一个数组[True,False],那么你希望它代表两个像素,一个是黑色的,另一个是白色的?如果这个值为True,它意味着白色像素,如果它为False,它就是黑色像素。所以每个元素只对应一个像素。这就是为什么我每个50x50图像只有2500个元素,而你只有一个长度为2500的numpy数组?换句话说,它是一个2500x1阵列而不是50x50阵列?我有50x50阵列。50个像素的50个元素-其中一个元素是一行。我似乎无法将其转换为简单的50x50映像。这假设您的数组有50*50=2500个元素。什么是my_array.shape?哦,我明白了,你的数组不是一个统一的数组,而是一个类似数组的数组。如何创建阵列?什么是my_array[0]。dtype?my_array[0]。dtype显示属性错误:“list”没有属性dtype,我删除了一对外圆括号,我认为这可能是导致某些问题的原因。但是当我在这个修改过的数组上运行您的解决方案时,我得到:Value Error:只接受2个非关键字参数。是
my_数组。dtype
now
bool
?哦,它们是0和1,jpeg运行0到255。尝试将数组乘以255:P