import os
import json
from jsonpath import jsonpath
data_root = '/root/autodl-tmp/DFC2023-baseline/track1/data/track1/'
train_annotation_file = os.path.join(data_root, 'annotations/roof_fine_train.json') # 大 json
val_annotation_file = os.path.join(data_root, 'annotations/roof_fine_myval.json') # 要保存的小 json 文件名
anno = json.load(open(train_annotation_file, 'r')) # 读取 json
val_ids = list(range(100)) # 从大 json 中提取出的图片 id 列表
val = dict()
val["categories"] = anno["categories"]
val["images"] = jsonpath(anno, f'$.images[?(@.id in {str(val_ids)})]') # 提取属于 val_ids 的图像
val["annotations"] = jsonpath(anno, f'$.annotations[?(@.image_id in {str(val_ids)})]') # 属于 val_ids 的所有标注
with open(val_annotation_file, 'w') as f: # 保存
json.dump(val, f)
从 coco 格式的 json 文件中提取一部分子集
最新推荐文章于 2023-10-19 11:22:52 发布