将Numpy数组保存为图像

429 投票
24 回答
951386 浏览
提问于 2025-04-15 11:47

我有一个矩阵,类型是Numpy数组。我该怎么把它保存成图片呢?格式可以是png、jpeg、bmp等任何一种。不过有一点很重要,就是不能使用PIL这个库。

24 个回答

273

这个例子使用了PIL库,但也许有些人会觉得它有用:

import scipy.misc
scipy.misc.imsave('outfile.jpg', image_array)

编辑: 现在的scipy版本开始对所有图像进行归一化处理,也就是说,把数据中的最小值变成黑色,最大值变成白色。如果你的数据需要保持准确的灰度级别或者准确的RGB通道,这样的处理就不太合适。解决办法是:

import scipy.misc
scipy.misc.toimage(image_array, cmin=0.0, cmax=...).save('outfile.jpg')
453

使用 PIL,你可以通过以下方式保存一个 NumPy 数组 arr

from PIL import Image
im = Image.fromarray(arr)
im.save("your_file.jpeg")

想了解更多可用的数据格式,可以查看 文档,里面包括 JPEG、PNG 等格式。

66

你可以使用 PyPNG。它是一个完全用Python写的开源工具,不需要其他任何依赖,能够处理PNG格式的图片,既可以编码也可以解码。而且它还 支持 将NumPy数组直接写成图片。

撰写回答