Как изменить код plt.subplot для одного изображения?(В коде Github GAN) - PullRequest
0 голосов
/ 29 ноября 2018

Я использую код из github https://github.com/eriklindernoren/Keras-GAN/blob/master/gan/gan.py

Демонстрационный код показывает 25 сгенерированных изображений в одном файле изображения. Но я хочу напечатать каждое изображение в оригинальном размере в виде файла 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 голосов
/ 29 ноября 2018

Вы создаете фигуру с 25 подсюжетами, используя

fig, axs = plt.subplots(5, 5)

Замените это на fig, ax = plt.subplots(), чтобы создать фигуру с 1 набором осей.Это также необходимо сделать внутри цикла, если вы хотите, чтобы каждое из 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()
...