绘制文件夹中的每个图像

时间:2019-05-03 13:51:28

标签: python python-3.x matplotlib

我试图将文件夹中的每个图像及其文件名作为标题绘制出来,但是我似乎做不到。

我已经尝试了这段代码,但是文件名都是一样的(由于迭代问题,它们是列表中最终图像的全部名称)。

# Put all images in the folder into a list (works)
images = []
for f in glob.iglob("/content/testing_data/Bad/*"):
    images.append(np.asarray(Image.open(f)))

# plot the images (works)
images = np.array(images)
fig, axs = plt.subplots(15, 5, figsize=(10, 50))
fig.subplots_adjust(hspace = .3, wspace=.3)
axs = axs.ravel()

# This is for displaying the names (works)
for filename in os.listdir('/content/testing_data/Bad/'):
  RatName = filename[:-4]

# show the filename (this bit doesn't work)
for i in range(len(images)):
  axs[i].imshow(images[i])
  axs[i].set_title(RatName)

我希望它以文件名作为标题将图像绘制为子图...

文件名1,文件名2,文件名3

但是我明白了:

文件名3,文件名3,文件名3

1 个答案:

答案 0 :(得分:0)

当前,您正在使用固定变量作为文件名。尽管您未能提供MCVE,但我认为这应该对您有用。这个想法是使用索引i来动态设置文件名。之所以使用i+1是因为在python中,range(len(images))会默认生成从0开始的数字

for i in range(len(images)):
  axs[i].imshow(images[i])
  axs[i].set_title('filename%s' %(i+1))

编辑,请尝试以下操作

i = 0
for filename in os.listdir('/content/testing_data/Bad/'):
  RatName = filename[:-4]
  axs[i].imshow(images[i])
  axs[i].set_title(RatName)
  i += 1