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

如何用Python将自定义数据集CSV转换为YOLOv8单图文本格式?

实现方案(Python)

假设你的CSV文件结构如下(列名可根据实际调整):

image_name,category,x_coords,y_coords
1.png,cat,10 20;30 40;50 60
1.png,dog,70 80;90 100;110 120
2.png,bird,130 140;150 160;170 180

这里用分号分隔每个坐标点,你可以根据实际存储格式调整解析逻辑。

步骤代码

import csv
import os

# 配置路径
csv_path = "your_dataset.csv"  # 替换成你的CSV文件路径
output_dir = "image_annotations"  # 输出txt的文件夹

# 创建输出文件夹(不存在则自动创建)
os.makedirs(output_dir, exist_ok=True)

# 用字典按图片名分组存储区域数据
image_regions = {}

# 读取CSV并分组
with open(csv_path, mode='r', encoding='utf-8') as csv_file:
    csv_reader = csv.DictReader(csv_file)
    for row in csv_reader:
        img_name = row['image_name']  # 替换成你的CSV中图片名称的列名
        # 整理当前区域的信息,格式可自定义
        region_info = f"{row['category']} {' '.join(row['x_coords'].split(';'))} {' '.join(row['y_coords'].split(';'))}"
        # 初始化图片对应的区域列表
        if img_name not in image_regions:
            image_regions[img_name] = []
        image_regions[img_name].append(region_info)

# 生成每个图片的txt文件
for img_name, regions in image_regions.items():
    txt_path = os.path.join(output_dir, f"{img_name}.txt")
    with open(txt_path, mode='w', encoding='utf-8') as txt_file:
        # 每个区域占一行
        txt_file.write('\n'.join(regions))

关键说明

  • 替换代码中的csv_path和output_dir为你的实际路径
  • 调整row['image_name']、row['category']等字段名,匹配你的CSV列名
  • 区域信息的格式可以自定义:如果你的坐标是分散的列(如x1、y1、x2、y2),直接拼接对应字段即可
  • 代码会自动将同一图片的所有区域写入对应txt文件,每个区域单独占一行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 21:17:16