如何将一个numpy数组转换(并显示)一个图像?

我已经创build了一个数组:

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

我想要做的是在512×512图像的中心显示一个红点。 (至less要开始…我想我可以从那里找出其余的)

您可以使用PIL创build(并显示)图像:

 from PIL import Image import numpy as np w, h = 512, 512 data = np.zeros((h, w, 3), dtype=np.uint8) data[256, 256] = [255, 0, 0] img = Image.fromarray(data, 'RGB') img.save('my.png') img.show() 

你是这个意思吗?

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

最短的path是使用scipy ,像这样:

 from scipy.misc import toimage toimage(data).show() 

这也需要安装PIL或Pillow。

一个类似的方法也需要PIL或枕头,但可能会调用不同的查看器是:

 from scipy.misc import imshow imshow(data) 

Python成像库可以使用Numpy数组显示图像。 看看这个页面的示例代码:

  • 在数字数组和PIL图像对象之间转换

编辑:正如该页面的底部说明,你应该检查最新的发布说明,使这更简单:

http://effbot.org/zone/pil-changes-116.htm

使用pygame ,你可以打开一个窗口,获取表面作为一个像素数组,并从那里操作你想要的。 您需要将您的numpy数组复制到曲面数组中,但是这比在pygame曲面上进行实际的graphics操作要慢得多。