我已经创建了一个数组:

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

我想要做的是在512x512图像的中心显示一个红点。(至少开始时……我想我可以从那里弄清楚剩下的)


当前回答

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

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

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

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

其他回答

使用pygame,您可以打开一个窗口,以像素数组的形式获取曲面,并从那里任意操作。不过,您需要将numpy数组复制到surface数组中,这比在pygame表面上进行实际的图形操作要慢得多。

以下方法应该有效:

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

如果你正在使用Jupyter notebook/lab,在导入matplotlib之前使用这个内联命令:

%matplotlib inline 

一个更有特色的方法是安装ipyml pip安装ipympl并使用

%matplotlib widget 

请参见示例。

import numpy as np
from keras.preprocessing.image import array_to_img
img = np.zeros([525,525,3], np.uint8)
b=array_to_img(img)
b

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

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

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

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

使用枕头的fromarray,例如:

from PIL import Image
from numpy import *

im = array(Image.open('image.jpg'))
Image.fromarray(im).show()