我已经创建了一个阵列正是如此:如何将numpy数组转换为(并显示)图像?
import numpy as np
data = np.zeros((512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
我想这个做的是在512×512图像的中心显示一个红点。 (至少从头开始...我想我可以从那里找出其余的部分)
我已经创建了一个阵列正是如此:如何将numpy数组转换为(并显示)图像?
import numpy as np
data = np.zeros((512,512,3), dtype=np.uint8)
data[256,256] = [255,0,0]
我想这个做的是在512×512图像的中心显示一个红点。 (至少从头开始...我想我可以从那里找出其余的部分)
你可以使用PIL创建(和显示)的图像:
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()
这工作很好。谢谢。 – jlswint 2010-04-17 18:23:11
似乎有一个错误。你创建的数组大小为'(w,h,3)',但它应该是'(h,w,3)',因为PIL中的索引与numpy中的索引不同。有相关的问题:http:// stackoverflow。com/questions/33725237/image-fromarray-changes-size – user502144 2015-12-06 18:57:20
@ user502144:谢谢你指出我的错误。我应该创建一个形状数组''(h,w,3)'。 (现在已经固定,在上面)。第一个轴的长度可以被认为是数组中的行数,第二个轴的长度是列数。因此'(h,w)'对应于一个“高度”“h”和“宽度”“w”的数组。 'Image.fromarray'将这个数组转换成高度为'h'和宽度为'w'的图像。 – unutbu 2015-12-06 20:47:59
使用pygame,您可以打开一个窗口,以一个像素数组的形式获取曲面,然后根据需要进行操作。您需要将您的numpy数组复制到曲面数组中,然而,这比在pygame曲面上进行实际的图形操作要慢得多。
Python Imaging Library可以使用Numpy阵列显示图像。看看这个页面代码示例:
编辑:由于在该页面底部的通知上说,你应该检查最新的发行说明,这使得这个简单得多:
这不回答问题 – 2018-01-18 02:00:18
最短路径使用scipy
,像这样:
from scipy.misc import toimage
toimage(data).show()
这需要安装PIL或Pillow。
类似的方法也需要PIL或枕头但可以调用不同的观众是:
from scipy.misc import imshow
imshow(data)
你刚才说这个?
from matplotlib import pyplot as plt
plt.imshow(data, interpolation='nearest')
plt.show()
参见http://stackoverflow.com/questions/902761/saving-a-numpy-array-as-尽管那个人强加了PIL不能使用的限制。 – 2010-04-17 18:01:47