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

Python如何根据one-hot编码值将图片拆分存入对应类别文件夹

具体实现方法

你已经完成了CSV读取与图片路径映射的部分,只需要补全目录创建、逐行匹配标签、文件存储的逻辑即可,完整可运行代码如下:

import os
import shutil
import pandas as pd
from glob import glob

# 你原有已编写的逻辑
df = pd.read_csv('/GroundTruth.csv')
image_path = {os.path.splitext(os.path.basename(x))[0]: x
                     for x in glob(os.path.join('data/', '*', '*.png'))}
df['path'] = df['image'].map(image_path.get)

# 以下为分类存储的实现逻辑
# 分类后图片的存储根目录,可根据自己的需求修改路径
save_root = "category_images"
# one-hot格式对应的类别列名
class_list = ["A", "B", "C"]

# 提前创建A、B、C三个类别子目录,目录已存在时不触发报错
for cls_name in class_list:
    os.makedirs(os.path.join(save_root, cls_name), exist_ok=True)

# 逐行处理每张图片
for _, row in df.iterrows():
    current_img_path = row["path"]
    # 跳过路径匹配失败、本地不存在的无效图片条目
    if not pd.notna(current_img_path) or not os.path.exists(current_img_path):
        continue
    # 提取当前图片所有标注为1的类别,兼容单标签、多标签两种场景
    match_classes = [col for col in class_list if row[col] == 1]
    # 将图片写入对应类别文件夹
    for cls in match_classes:
        target_save_path = os.path.join(save_root, cls, os.path.basename(current_img_path))
        # 要保留原文件用shutil.copy,要直接移动原文件就替换为shutil.move
        shutil.copy(current_img_path, target_save_path)
  • 代码默认执行复制操作,不会修改data目录下的原始图片,如果需要直接移动原文件到分类目录,把shutil.copy替换为shutil.move即可
  • 代码自动兼容多标签场景,如果某张图片同时在多个标签列标记为1,会自动复制到所有匹配的类别文件夹中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 02:02:18