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

请求协助:基于label.csv按类别划分图像数据集至对应文件夹

完善后的代码实现

先说明你原代码的几个问题:

  • row[]没有指定具体列,需要写对应标签列的名称或索引(比如row['label']或者row[1])
  • 原代码只是把数据分类存进DataFrame,没实际处理图片文件的移动/复制,这才是你要的核心功能
  • pandas的append方法已经被弃用,推荐用pd.concat

下面是能直接实现图片分类到对应文件夹的完整代码:

import pandas as pd
import os
import shutil

# 1. 配置路径
label_csv_path = 'label.csv'  # 你的label文件路径
image_dir = 'images'  # 存放所有未分类图片的文件夹路径
output_base_dir = 'classified_images'  # 分类后图片的根文件夹

# 2. 读取标签文件,根据实际情况调整header参数
# 如果csv没有列名,用header=None并指定列名;如果有列名直接用pd.read_csv(label_csv_path)
df = pd.read_csv(label_csv_path, header=None, names=['image_name', 'label'])

# 3. 创建分类文件夹
for label in df['label'].unique():
    class_dir = os.path.join(output_base_dir, f'class_{label}')
    os.makedirs(class_dir, exist_ok=True)

# 4. 遍历每一行,移动/复制图片到对应文件夹
for _, row in df.iterrows():
    image_name = row['image_name']
    label = row['label']
    # 构建源文件路径和目标路径
    src_path = os.path.join(image_dir, image_name)
    dst_path = os.path.join(output_base_dir, f'class_{label}', image_name)
    
    # 检查源文件是否存在,避免报错
    if os.path.exists(src_path):
        # 复制文件(如果要移动文件,把shutil.copy换成shutil.move)
        shutil.copy(src_path, dst_path)
        print(f"已处理: {image_name} -> class_{label}")
    else:
        print(f"警告: 文件不存在 {src_path}")

代码说明

  • 先配置好三个关键路径:标签文件、原始图片文件夹、分类后输出的根文件夹
  • 读取csv时,如果你的label.csv自带列名(比如第一列叫'image',第二列叫'label'),就去掉header=None, names=['image_name', 'label']这部分,直接用pd.read_csv(label_csv_path)
  • os.makedirs(..., exist_ok=True)确保文件夹不存在时自动创建,存在也不会报错
  • 用shutil.copy复制图片,要是想直接移动原始图片,改成shutil.move就行
  • 加了文件存在检查,避免因为图片缺失导致程序崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:12:07