You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python3.6(Anaconda+OpenCV)如何从多文件夹读取多张图片

批量读取多文件夹下的图片(OpenCV + Python)

嘿,我来帮你搞定这个批量读取图片的问题!你的数据集是按子文件夹分类存放的,刚好可以用Python的文件遍历工具结合OpenCV来处理,下面给你两种实用的方案:

方法一:用os.walk()递归遍历所有文件

os.walk()会帮你逐层遍历目标文件夹下的所有子目录和文件,非常适合这种有层级结构的数据集:

import os
import cv2

# 定义数据集根路径(注意用正斜杠或者双反斜杠,避免转义问题)
dataset_path = "E:/food-101/images"
# 用来存储读取到的图片和对应的类别(可选,训练时可能需要)
images = []
labels = []

# 遍历所有子文件夹和文件
for root, dirs, files in os.walk(dataset_path):
    for file in files:
        # 只处理图片文件,可根据你的数据集扩展后缀
        if file.lower().endswith(('.png', '.jpg', '.jpeg', '.bmp')):
            # 拼接完整的图片路径
            img_path = os.path.join(root, file)
            # 用OpenCV读取图片
            img = cv2.imread(img_path)
            # 检查图片是否读取成功(避免损坏的图片导致报错)
            if img is not None:
                images.append(img)
                # 如果需要,还可以把当前子文件夹名作为类别标签
                label = os.path.basename(root)
                labels.append(label)
            else:
                print(f"警告:无法读取图片 {img_path}")

print(f"总共读取了 {len(images)} 张图片")

方法二:用glob.glob()快速匹配文件

如果你觉得os.walk有点繁琐,glob模块的通配符匹配会更简洁,一行代码就能匹配所有子文件夹里的图片:

import glob
import cv2

dataset_path = "E:/food-101/images"
# 用**匹配所有子文件夹,*.jpg匹配所有jpg图片(可修改后缀)
img_paths = glob.glob(os.path.join(dataset_path, "**", "*.jpg"), recursive=True)
# 也可以同时匹配多种后缀:
# img_paths = glob.glob(os.path.join(dataset_path, "**", "*.[jp][pn]g"), recursive=True)

images = []
labels = []

for path in img_paths:
    img = cv2.imread(path)
    if img is not None:
        images.append(img)
        # 提取类别标签(子文件夹名)
        label = os.path.basename(os.path.dirname(path))
        labels.append(label)
    else:
        print(f"警告:无法读取图片 {path}")

print(f"总共读取了 {len(images)} 张图片")

小提示

  • Windows路径里,尽量用正斜杠/或者双反斜杠\\,避免单个反斜杠的转义问题;
  • 记得添加图片格式的判断,避免读取非图片文件;
  • 加入img is not None的检查,防止损坏的图片影响后续代码运行;
  • 如果你的训练需要按类别处理,上面的代码已经帮你提取了子文件夹作为标签,直接用就行。

内容的提问来源于stack exchange,提问作者aaku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:34:33