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

如何将包含bbox标注信息的CSV文件转换为指定结构的JSON

解决CSV按图片分组转带多标注JSON的方案

核心解决思路是先按Photo ID对CSV行做分组,同一ID的所有行标注都合并到对应图片的annotations列表中,避免逐行生成独立图片对象。

以下是无需额外依赖的Python实现代码:

import csv
import json

# 临时字典,用于按Photo ID分组
img_dict = {}

with open('你的CSV文件路径.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        photo_id = int(row['Photo ID'])
        # 该ID首次出现时新建图片条目
        if photo_id not in img_dict:
            img_dict[photo_id] = {
                "image_id": photo_id,
                "file_name": row['Photo Name'].rsplit('.', 1)[0],  # 去掉后缀.jpg
                "height": 2880,
                "width": 5760,
                "annotations": []
            }
        # 新增当前行的标注
        annotation = {
            "bbox": [
                float(row['X1']),
                float(row['Y1']),
                float(row['X2']),
                float(row['Y2'])
            ],
            "bbox_mode": 1,
            "category_id": int(row['Category'])
        }
        img_dict[photo_id]['annotations'].append(annotation)

# 字典值转列表就是目标结构
result = list(img_dict.values())

# 输出到JSON文件
with open('输出结果.json', 'w', encoding='utf-8') as f:
    json.dump(result, f, indent=4, ensure_ascii=False)

如果需要调整图片的height、width为动态值,或者修改bbox的数值格式,直接修改对应字段的生成逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:36:02