gpt4 book ai didi

python - 在 Python 中保存异质图像网格

转载 作者:太空宇宙 更新时间:2023-11-04 00:08:40 25 4
gpt4 key购买 nike

如何使用类似下行的内容将图像保存在 4x4 异构图像的网格中?假设图像由 sample[i] 标识,并且 i 取 16 个不同的值。

scipy.misc.imsave(str(img_index) + '.png', sample[1])

与此答案类似,但针对 16 个不同的图像 https://stackoverflow.com/a/42041135/2414957

我不偏向于使用的方法,只要它能起作用。此外,我对保存图像感兴趣,而不是使用 plt.show() 显示它们,因为我正在使用远程服务器并处理 CelebA 图像数据集,这是一个巨大的数据集。我只想从我的批处理中随机选择 16 张图像并保存 DCGAN 的结果,看看它是否有意义或是否收敛。

*目前,我正在保存如下图片:

batch_no = random.randint(0, 63)


scipy.misc.imsave('sample_gan_images/iter_%d_epoch_%d_sample_%d.png' %(itr, epoch, batch_no), sample[batch_no])

在这里,我有 25 个时期和 2000 次迭代,批量大小为 64。

最佳答案

就我个人而言,我倾向于使用 matplotlib.pyplot.subplots对于这些情况。如果您的图像真的是异质的,那么在您链接到的答案中,它可能比基于图像连接的方法更好。

import matplotlib.pyplot as plt
from scipy.misc import face

x = 4
y = 4

fig,axarr = plt.subplots(x,y)
ims = [face() for i in range(x*y)]

for ax,im in zip(axarr.ravel(), ims):
ax.imshow(im)

fig.savefig('faces.png')

default plt.subplots behavior

我对 subplots 的最大提示是结果图中的空白数量。同样,对于您的应用程序,您可能不需要轴刻度/帧。这是处理这些问题的包装函数:

import matplotlib.pyplot as plt

def savegrid(ims, rows=None, cols=None, fill=True, showax=False):
if rows is None != cols is None:
raise ValueError("Set either both rows and cols or neither.")

if rows is None:
rows = len(ims)
cols = 1

gridspec_kw = {'wspace': 0, 'hspace': 0} if fill else {}
fig,axarr = plt.subplots(rows, cols, gridspec_kw=gridspec_kw)

if fill:
bleed = 0
fig.subplots_adjust(left=bleed, bottom=bleed, right=(1 - bleed), top=(1 - bleed))

for ax,im in zip(axarr.ravel(), ims):
ax.imshow(im)
if not showax:
ax.set_axis_off()

kwargs = {'pad_inches': .01} if fill else {}
fig.savefig('faces.png', **kwargs)

在与之前使用的同一组图像上运行 savegrid(ims, 4, 4) 会产生:

output of savegrid wrapper

如果您使用 savegrid,如果您希望每个单独的图像占用更少的空间,请传递 fill=False 关键字参数。如果您想显示轴刻度/帧,请传递 showax=True

关于python - 在 Python 中保存异质图像网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53255432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com