首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]揭秘Python高效读取文件夹内所有图片的秘密

发布于 2025-07-01 15:30:25
0
1349

引言在处理图像数据时,高效地读取文件夹内的所有图片文件是数据预处理的重要一步。Python作为数据处理和图像处理领域的热门语言,提供了多种库来实现这一功能。本文将揭秘Python中几种高效读取文件夹内...

引言

在处理图像数据时,高效地读取文件夹内的所有图片文件是数据预处理的重要一步。Python作为数据处理和图像处理领域的热门语言,提供了多种库来实现这一功能。本文将揭秘Python中几种高效读取文件夹内所有图片的方法。

方法一:使用osPIL

Python的os模块可以帮助我们遍历文件夹,而PIL(Python Imaging Library)库(现更名为Pillow)则可以用来读取图片。以下是一个简单的例子:

import os
from PIL import Image
def read_images_from_folder(folder_path): images = [] for filename in os.listdir(folder_path): if filename.endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')): img_path = os.path.join(folder_path, filename) with Image.open(img_path) as img: images.append(img) return images
folder_path = '/path/to/your/images'
images = read_images_from_folder(folder_path)

这段代码会返回一个包含所有图片对象的列表。

方法二:使用glob模块

glob模块可以更方便地匹配文件路径模式,以下是使用glob模块读取图片的例子:

import glob
from PIL import Image
def read_images_from_folder_with_glob(folder_path): image_paths = glob.glob(os.path.join(folder_path, '*.{png,jpg,jpeg,bmp,gif}')) images = [Image.open(path) for path in image_paths] return images
folder_path = '/path/to/your/images'
images = read_images_from_folder_with_glob(folder_path)

这种方法使用了glob模块的glob函数来匹配所有指定格式的文件。

方法三:使用imageio

imageio是一个强大的图像处理库,它可以读取和写入多种格式的图像文件。以下是如何使用imageio读取文件夹内所有图片的例子:

import imageio
def read_images_from_folder_with_imageio(folder_path): image_paths = glob.glob(os.path.join(folder_path, '*.{png,jpg,jpeg,bmp,gif}')) images = [imageio.imread(path) for path in image_paths] return images
folder_path = '/path/to/your/images'
images = read_images_from_folder_with_imageio(folder_path)

imageio.imread函数可以读取不同格式的图像文件。

性能比较

在处理大量图像时,性能是一个重要的考虑因素。以下是一个简单的性能测试:

import time
def read_images_with_os_pillow(folder_path): start_time = time.time() images = read_images_from_folder(folder_path) print("os + Pillow took {:.2f} seconds".format(time.time() - start_time))
def read_images_with_glob_pillow(folder_path): start_time = time.time() images = read_images_from_folder_with_glob(folder_path) print("glob + Pillow took {:.2f} seconds".format(time.time() - start_time))
def read_images_with_imageio(folder_path): start_time = time.time() images = read_images_from_folder_with_imageio(folder_path) print("imageio took {:.2f} seconds".format(time.time() - start_time))
folder_path = '/path/to/your/images'
read_images_with_os_pillow(folder_path)
read_images_with_glob_pillow(folder_path)
read_images_with_imageio(folder_path)

通常,imageio在读取大量图像时表现最佳,其次是glob模块,而os模块通常是最慢的。

总结

Python提供了多种方法来高效地读取文件夹内的所有图片。选择合适的方法取决于具体的应用场景和性能需求。通过本文的介绍,读者应该能够根据实际情况选择最合适的方法来处理图像数据。

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流