我已经创建了一个数组:

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

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


当前回答

如何显示存储在numpy数组中的图像与示例(工作在Jupyter笔记本)

我知道有更简单的答案,但这个答案会让你理解如何从numpy数组中绘制图像。

负载的例子

from sklearn.datasets import load_digits
digits = load_digits()
digits.images.shape   #this will give you (1797, 8, 8). 1797 images, each 8 x 8 in size

显示一个图像的数组

digits.images[0]
array([[ 0.,  0.,  5., 13.,  9.,  1.,  0.,  0.],
       [ 0.,  0., 13., 15., 10., 15.,  5.,  0.],
       [ 0.,  3., 15.,  2.,  0., 11.,  8.,  0.],
       [ 0.,  4., 12.,  0.,  0.,  8.,  8.,  0.],
       [ 0.,  5.,  8.,  0.,  0.,  9.,  8.,  0.],
       [ 0.,  4., 11.,  0.,  1., 12.,  7.,  0.],
       [ 0.,  2., 14.,  5., 10., 12.,  0.,  0.],
       [ 0.,  0.,  6., 13., 10.,  0.,  0.,  0.]])

为可视化100张图像创建空的10 × 10子图

import matplotlib.pyplot as plt
fig, axes = plt.subplots(10,10, figsize=(8,8))

绘制100幅图像

for i,ax in enumerate(axes.flat):
    ax.imshow(digits.images[i])

结果:

什么是坐标轴?平做什么? 它创建了一个numpy枚举器,以便您可以遍历轴,以便在其上绘制对象。 例子:

import numpy as np
x = np.arange(6).reshape(2,3)
x.flat
for item in (x.flat):
    print (item, end=' ')

其他回答

例如,你的图像在一个名为image的数组中

你要做的就是

plt.imshow(image)
plt.show

这将以图像的形式显示一个数组 另外,不要忘记导入PLT

如何显示存储在numpy数组中的图像与示例(工作在Jupyter笔记本)

我知道有更简单的答案,但这个答案会让你理解如何从numpy数组中绘制图像。

负载的例子

from sklearn.datasets import load_digits
digits = load_digits()
digits.images.shape   #this will give you (1797, 8, 8). 1797 images, each 8 x 8 in size

显示一个图像的数组

digits.images[0]
array([[ 0.,  0.,  5., 13.,  9.,  1.,  0.,  0.],
       [ 0.,  0., 13., 15., 10., 15.,  5.,  0.],
       [ 0.,  3., 15.,  2.,  0., 11.,  8.,  0.],
       [ 0.,  4., 12.,  0.,  0.,  8.,  8.,  0.],
       [ 0.,  5.,  8.,  0.,  0.,  9.,  8.,  0.],
       [ 0.,  4., 11.,  0.,  1., 12.,  7.,  0.],
       [ 0.,  2., 14.,  5., 10., 12.,  0.,  0.],
       [ 0.,  0.,  6., 13., 10.,  0.,  0.,  0.]])

为可视化100张图像创建空的10 × 10子图

import matplotlib.pyplot as plt
fig, axes = plt.subplots(10,10, figsize=(8,8))

绘制100幅图像

for i,ax in enumerate(axes.flat):
    ax.imshow(digits.images[i])

结果:

什么是坐标轴?平做什么? 它创建了一个numpy枚举器,以便您可以遍历轴,以便在其上绘制对象。 例子:

import numpy as np
x = np.arange(6).reshape(2,3)
x.flat
for item in (x.flat):
    print (item, end=' ')

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

补充使用matplotlib这样做。我发现做计算机视觉任务很方便。假设有dtype = int32的数据

from matplotlib import pyplot as plot
import numpy as np

fig = plot.figure()
ax = fig.add_subplot(1, 1, 1)
# make sure your data is in H W C, otherwise you can change it by
# data = data.transpose((_, _, _))
data = np.zeros((512,512,3), dtype=np.int32)
data[256,256] = [255,0,0]
ax.imshow(data.astype(np.uint8))

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

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

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

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