如何将numpy数组转换为图像并显示?

372 投票
11 回答
894705 浏览
提问于 2025-04-15 21:43

我创建了一个数组,内容如下:

import numpy as np
data = np.zeros( (512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]

我希望这个数组能在一个512x512的图片中心显示一个红点。(至少一开始是这样……我想我可以从这里开始弄明白其他的)

11 个回答

53

注意:这两个API最开始是被弃用的,后来又被删除了。

最简单的方法是使用 scipy,像这样:

# Note: deprecated in v0.19.0 and removed in v1.3.0
from scipy.misc import toimage
toimage(data).show()

这还需要安装PIL或Pillow库。

还有一种类似的方法,也需要PIL或Pillow,但它可能会调用不同的查看器,可以这样做:

# Note: deprecated in v1.0.0 and removed in v1.8.0
from scipy.misc import imshow
imshow(data)
437

使用 plt.imshow 来创建图像,然后用 plt.show 来显示它:

from matplotlib import pyplot as plt
plt.imshow(data, interpolation='nearest')
plt.show()

如果你在 Jupyter 笔记本中工作,在导入 matplotlib 之前加上这一行:

%matplotlib inline 

想要在 Jupyter 中做互动图表 [演示],需要安装 ipympl,使用命令 pip install ipympl,然后使用:

%matplotlib widget 
355

你可以使用PIL这个库来创建(和显示)一张图片:

from PIL import Image
import numpy as np

w, h = 512, 512
data = np.zeros((h, w, 3), dtype=np.uint8)
data[0:256, 0:256] = [255, 0, 0] # red patch in upper left
img = Image.fromarray(data, 'RGB')
img.save('my.png')
img.show()

撰写回答