如何使用python将列表中存储的像素转换为图像?
我在列表中存储了一堆像素,现在我想把它转换成一幅图像。如何将该列表转换为图像?谢谢使用,您可以使用阵列创建图像:如何使用python将列表中存储的像素转换为图像?,python,python-3.x,image,list,image-processing,Python,Python 3.x,Image,List,Image Processing,我在列表中存储了一堆像素,现在我想把它转换成一幅图像。如何将该列表转换为图像?谢谢使用,您可以使用阵列创建图像: pix = [ [[90, 94, 6], [126, 108, 24], [180, 116, 42], [166, 116, 46], [72, 94, 31]], [[101, 96, 14], [190, 165, 84], [202, 134, 63], [170, 115, 50], [40, 50, 0]], [[145, 125, 53], [
pix = [
[[90, 94, 6], [126, 108, 24], [180, 116, 42], [166, 116, 46], [72, 94, 31]],
[[101, 96, 14], [190, 165, 84], [202, 134, 63], [170, 115, 50], [40, 50, 0]],
[[145, 125, 53], [150, 112, 40], [148, 73, 6], [156, 90, 31], [25, 11, 1]],
[[133, 124, 57], [165, 142, 75], [195, 142, 77], [169, 120, 62], [82, 74, 28]],
[[73, 105, 40], [56, 77, 10], [138, 135, 67], [97, 95, 34], [45, 69, 21]],
]
现在,您可以查看图像:
from PIL import Image
import numpy as np
img = Image.fromarray(np.array(pix).astype(np.uint8))
好消息是,从现在起,您可以从PIL的所有图像处理工具(调整大小、缩略图、过滤器等)中获益。以上答案将您的列表转换为
PIL图像。如果您只想查看图像,可以执行以下操作:
img.show()
下面是如何使用。默认情况下,OpenCV使用Numpy数组来显示图像,因此您可以简单地将列表转换为
结果:
import matplotlib.pyplot as plt
plt.imshow(pix)
使用numpy,您可以numpy.array(pix)
使用cv2,您可以cv2.imwrite
将阵列作为图像,这不是您将从OP的数据中获得的图像!有蓝色的地方应该是橙色的。PIL使用RGB排序,您已将OP的数据重新排序为BGR排序!见多识广。编辑。谢谢如何将其更改为RGB排序@MarkSetchell@GedePawitradi这取决于你下一步打算做什么,你的问题很模糊。我甚至不知道你的原始数据是什么。。。如果您计划使用PIL或OpenCV/Numpy来处理它,也不会这样做。请单击您的问题下方的编辑
,并对其进行改进,以便我(和其他人)能够更好地帮助您。谢谢
import numpy as np
import cv2
pix = [
[[90, 94, 6], [126, 108, 24], [180, 116, 42], [166, 116, 46], [72, 94, 31]],
[[101, 96, 14], [190, 165, 84], [202, 134, 63], [170, 115, 50], [40, 50, 0]],
[[145, 125, 53], [150, 112, 40], [148, 73, 6], [156, 90, 31], [25, 11, 1]],
[[133, 124, 57], [165, 142, 75], [195, 142, 77], [169, 120, 62], [82, 74, 28]],
[[73, 105, 40], [56, 77, 10], [138, 135, 67], [97, 95, 34], [45, 69, 21]],
]
# Convert to ndarray
img = np.array(pix).astype(np.uint8)
# Save image
cv2.imwrite('img.png', img)
# Display image
cv2.imshow('img', img)
cv2.waitKey()