从numpy数组中显示matplotlib中的多个图像

时间:2017-01-02 19:51:31

标签: python numpy matplotlib

我有一个形状为(1,64,224,224)的数组。 64个单通道图像,大小为224 * 224。当我这样做时:

plt.imshow(output_image[0,1,:,:], interpolation='nearest')

图像显示正确。

但是当我这样做时:

for i in range(64):
    plt.imshow(output_image[0,i,:,:], interpolation='nearest')

即使有64张图像,我也只看到1张图像。

如何获得64行图像?我做错了什么?

2 个答案:

答案 0 :(得分:5)

您可以为每张图片创建一个新的子图:

fig = plt.figure(figsize=(50, 50))  # width, height in inches

for i in range(64):
    sub = fig.add_subplot(64, 1, i + 1)
    sub.imshow(output_image[0,i,:,:], interpolation='nearest')

这会将所有64张图像放在一列中。改为:

sub = fig.add_subplot(8, 8, i + 1)

八列八行。

答案 1 :(得分:0)

此函数为每个图像创建子图:
img的形状为(n,height,width,channel)

import numpy as np
def picshow(img):
    num = len(img)
    ax = np.ceil(np.sqrt(num)) 
    ay = np.rint(np.sqrt(num)) 
    fig =plt.figure()
    for i in range(1,num+1):
        sub = fig.add_subplot(ax,ay,i)
        sub.set_title("titre",i)
        sub.axis('off')
        sub.imshow(data[i-1])
    plt.show()