如何在Python中将一维图像数组转换为PIL图像

如何在Python中将一维图像数组转换为PIL图像,python,image,numpy,matplotlib,python-imaging-library,Python,Image,Numpy,Matplotlib,Python Imaging Library,我的问题与一个问题有关。我正在尝试从一维数组中读取图像,该数组包含1位灰度像素信息(0到255),用于28x28图像。因此,数组从0到783,其中每个像素编码为x=i*28+j 转换为二维28x28矩阵,如下所示: 000 001 002 003 ... 026 027 028 029 030 031 ... 054 055 056 057 058 059 ... 082 083 | | | | ... | | 728 729 730 731 ... 754 755 756

我的问题与一个问题有关。我正在尝试从一维数组中读取图像,该数组包含1位灰度像素信息(0到255),用于28x28图像。因此,数组从0到783,其中每个像素编码为x=i*28+j

转换为二维28x28矩阵,如下所示:

000 001 002 003 ... 026 027
028 029 030 031 ... 054 055
056 057 058 059 ... 082 083
 |   |   |   |  ...  |   |
728 729 730 731 ... 754 755
756 757 758 759 ... 782 783
出于图像处理(调整大小、倾斜)的原因,我希望将该数组读入内存中的PIL图像。我做了一些研究,我认为这是最有希望的。另一个想法是


我要找的是一个代码示例,它向我展示了如何通过Numpy、Matplotlib或其他任何方式加载一维数组。或者如何使用例如Numpy.vstack将该数组转换为二维图像,然后将其作为图像读取。

您可以使用
图像将Numpy数组转换为PIL图像。fromarray

import numpy as np
from PIL import Image 

arr = np.random.randint(255, size=(28*28))
img = Image.fromarray(arr.reshape(28,28), 'L')

L
模式表示阵列值表示亮度。结果将是灰度图像。

您可以使用
图像将NumPy数组转换为PIL图像。fromarray

import numpy as np
from PIL import Image 

arr = np.random.randint(255, size=(28*28))
img = Image.fromarray(arr.reshape(28,28), 'L')

L
模式表示阵列值表示亮度。结果将是灰度图像。

简单使用
np.重塑()
所需形状
(28,28)
?如何使用它加载图像?代码?是的,我不确定是否要阅读图像部分。简单使用
np.reformate()
,使用所需的
(28,28)
形状?以及如何使用它加载图像?代码?是的,我不确定是否要读取图像部分。也刚刚找到,用于。如何对存储为
ndarray
的彩色图像执行相同操作,其中我们有3个通道BGR@unutbu@Santhosh:要转换BGR-->RGB,您可以使用。谢谢@unutbu
img=img[…,:-1]
似乎比我工作的
OpenCV
中的
颜色转换要快得多。即使这样,你的帖子也帮了我大忙。
out=Image.fromarray(ima.reformate(ima.shape[0],ima.shape[1],3),“RGB”)!我很想从你那里学到更多的诀窍,这也是用于的。我如何处理存储为
ndarray
的彩色图像,我们有3个通道BGR@unutbu@Santhosh:要转换BGR-->RGB,您可以使用。谢谢@unutbu
img=img[…,:-1]
似乎比我工作的
OpenCV
中的
颜色转换要快得多。即使这样,你的帖子也帮了我大忙。
out=Image.fromarray(ima.reformate(ima.shape[0],ima.shape[1],3),“RGB”)!我很想从你那里学到更多的技巧