我正在尝试从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的参数是什么意思。我该如何实现?
答案 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毫秒内显示数百张图像