如何在Python中将一维图像数组转换为PIL图像
问题内容:
我的问题与Kaggle数据科学竞赛有关。我试图从含有一维阵列读取的图像 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图像。我对Matplotlib图像函数进行了一些研究,我认为这是最有希望的。另一个想法是Numpy图片功能。
我正在寻找
的代码示例向我展示了如何通过Numpy或Matplotlib或其他任何方式加载该一维数组。或者如何使用例如Numpy.vstack将该数组转换为二维图像,然后将其读取为图像。
问题答案:
您可以使用以下方法将NumPy数组转换为PIL图像Image.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
模式表示阵列值代表亮度。结果将是灰度图像。