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

如何用Python拆分含标注的复杂JSON文件并提取label坐标

解决方案

原代码问题分析

  • 未定义循环变量i和j,无法遍历所有frames和annotations条目
  • 缺少文件写入逻辑,既没法提取坐标数据,也不能完成JSON拆分

完整实现代码

场景1:提取所有标注坐标到CSV文件

如果只需要汇总所有标注的x/y/width/height坐标,生成CSV文件方便后续分析:

import json
import csv

# 读取原始JSON
with open('annotation_2131424.json', 'r', encoding='utf-8') as f:
    raw_data = json.load(f)

# 遍历收集坐标数据
coords_list = []
for frame_num, frame in enumerate(raw_data['frames']):
    for anno_num, anno in enumerate(frame['annotations']):
        label = anno['label']
        coords_list.append({
            'frame_index': frame_num,
            'annotation_index': anno_num,
            'x': label['x'],
            'y': label['y'],
            'width': label['width'],
            'height': label['height']
        })

# 写入CSV
with open('annotation_coords.csv', 'w', newline='', encoding='utf-8') as csv_file:
    writer = csv.DictWriter(csv_file, fieldnames=coords_list[0].keys())
    writer.writeheader()
    writer.writerows(coords_list)

场景2:按Frame拆分原始JSON为独立文件

如果需要把每个Frame的完整信息(含对应标注)拆分成单独的JSON文件,可按以下代码实现:

import json

# 读取原始JSON
with open('annotation_2131424.json', 'r', encoding='utf-8') as f:
    raw_data = json.load(f)

# 遍历每个Frame生成独立文件
for frame_num, frame in enumerate(raw_data['frames']):
    # 构造单Frame的JSON结构,保留原文件基础信息
    single_frame_json = {
        'id': raw_data['id'],
        'file': raw_data['file'],
        'metadata': raw_data['metadata'],
        'frame': frame
    }
    
    # 生成输出文件名(可根据实际需求修改命名规则)
    output_path = f'annotation_frame_{frame_num}.json'
    with open(output_path, 'w', encoding='utf-8') as out_file:
        json.dump(single_frame_json, out_file, indent=2, ensure_ascii=False)

注意事项

  • 如果你的frames条目里自带frame_id字段,建议用该字段替换代码中的frame_num作为文件名,辨识度更高
  • 处理超大型JSON文件时,推荐使用ijson库逐行解析,避免内存溢出
  • 若原始JSON结构有嵌套层级变动,需对应调整代码中的字段索引路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:50:31