如何在python中从文件绘制多个图像?

时间:2019-10-12 22:56:34

标签: python matplotlib jupyter-notebook

我正在尝试从jupyter笔记本中的文件绘制多个图像。显示了图像,但它们合而为一。我正在使用:

%matplotlib inline
from os import listdir
form PIL import image as PImage
from matplotlib import pyplot as plt

def loadImages(path):
    imagesList = listdir(path)
    loadedImages = []
    for image in imagesList:
        img = PImage.open(path+image)
        LoadedImages.append(img)
        Return loadedImages
path = 'C:/Users/Asus-PC/flowers/'
imgs = loadImages(path)

for img in imgs
    plt.figure()
    plt.imshow(img)

我希望它们出现在网格布局中(行和列)。问题的部分原因是我不知道add_subplot的参数是什么意思。我该如何实现?

2 个答案:

答案 0 :(得分:0)

您可以使用plt.subplots创建多个子图。确定已加载图像数的列数和行数。像这样:

from os import listdir
import matplotlib.pyplot as plt

path = 'C:/Users/Asus-PC/flowers/'
imagesList = listdir(path)
n_images = len(imagesList)    

figure, axes = plt.subplots(n_images, 1)   # (columns, rows)    
for ax, imgname in zip(axes, imagesList):  # Iterate over images and
        img = plt.imread(path+imgname)     # axes to plot one image on each.
        ax.imshow(img)                     # You can append them to an empty
                                           # list if you need them later.
plt.show()

答案 1 :(得分:0)

您可以使用matplotlib,但是它在显示大量图像时往往非常缓慢且效率低下。因此,如果您想更快,更轻松地进行操作,我建议您使用名为IPyPlot的软件包:

import ipyplot

ipyplot.plot_images(images_list, max_images=20, img_width=150)

它支持以下格式的图像:
-string文件路径
-PIL.Image个对象
-numpy.ndarray个代表图片的对象

它能够在约70毫秒内显示数百张图像