use*_*273 5 python arrays numpy image-processing 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")
Run Code Online (Sandbox Code Playgroud)
^这个给了我:"无法处理这种数据类型".
我已经看到PIL有一些功能,但它们只转换RGB像素列表,我有一个简单的黑白数组,没有其他通道.
首先,你应该使你的数组50x50而不是1d数组:
my_array = my_array.reshape((50, 50))
Run Code Online (Sandbox Code Playgroud)
然后,要获得标准的8位图像,您应该使用无符号的8位整数dtype:
my_array = my_array.reshape((50, 50)).astype('uint8')
Run Code Online (Sandbox Code Playgroud)
但你不希望Trues是1,你希望它们是255:
my_array = my_array.reshape((50, 50)).astype('uint8')*255
Run Code Online (Sandbox Code Playgroud)
最后,您可以转换为PIL图像:
im = Image.fromarray(my_array)
Run Code Online (Sandbox Code Playgroud)
我会像这样一次做到这一切:
im = Image.fromarray(my_array.reshape((50,50)).astype('uint8')*255)
Run Code Online (Sandbox Code Playgroud)