如何将plt.subplot代码修改为单个图像? (在Github GAN代码中)

时间:2018-11-29 10:09:44

标签: python matplotlib subplot

我正在使用github https://github.com/eriklindernoren/Keras-GAN/blob/master/gan/gan.py上的代码

The demo code show 25 generated image in one single image file. 但是我想将每个原始大小的图像打印为png文件。我已经尝试过

plt.imshow()

cv2.imwrite()

但是,它们没有起作用。没有子图图像,我将无法打印正确的图像。

这是打印图像的一部分:

def sample_images(self, epoch):
    r, c = 5, 5
    noise = np.random.normal(0, 1, (r * c, self.latent_dim))
    gen_imgs = self.generator.predict(noise)

    # Rescale images 0 - 1
    gen_imgs = 0.5 * gen_imgs + 0.5
    fig, axs = plt.subplots(r, c)
    cnt = 0

    for i in range(r):
        for j in range(c):
            axs[i,j].imshow(gen_imgs[cnt, :,:,0], cmap='gray')
            axs[i,j].axis('off')
            cnt += 1
    fig.savefig("images/%d.png" % epoch)
    plt.close()

非常感谢您。

1 个答案:

答案 0 :(得分:0)

您正在使用

创建具有25个子图的图形
fig, axs = plt.subplots(5, 5)

将其替换为fig, ax = plt.subplots(),以创建具有一组轴的图形。如果您希望25张图片中的每张都包含在自己的图形中,则还需要进入循环。另外,您还需要将对savefig的调用移入循环:

def sample_images(self, epoch):
    r, c = 5, 5
    noise = np.random.normal(0, 1, (r * c, self.latent_dim))
    gen_imgs = self.generator.predict(noise)

    # Rescale images 0 - 1
    gen_imgs = 0.5 * gen_imgs + 0.5

    cnt = 0

    for i in range(r):
        for j in range(c):
            fig, ax = plt.subplots()
            ax.imshow(gen_imgs[cnt, :,:,0], cmap='gray')
            ax.axis('off')
            cnt += 1
            fig.savefig("images/%d.png" % epoch)
            plt.close()