主体内容是基于这个作者的,我做了修改更适合自己。
https://blog.csdn.net/weixin_44151034/article/details/119321450?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.no_search_link
import json
import os
# 需要合并的json文件路径
path = 'G:/xiao/dataset_molcreate/create_ann/test/json/'
entries = os.listdir(path)
entries.sort()
main = open(path + entries[0])
main = json.load(main)
# 第一个json文件 image的数量
main_image_number = len(main['images'])
# 第一个json文件 annotation的数量
main_annotation_number = len(main['annotations'])
# 这里获得所有的图像信息和标注ann信息
for entry in entries[1:]:
file = open(path + entry)
file = json.load(file)
for i in file['images']:
main['images'].append(i)
for i in file['annotations']:
main['annotations'].append(i)
#这里对图像信息的id进行修改
for i in range(len(main['images'])):
main['images'][i]['id'] = i+1
#这里对标注信息的id和图像id进行修改
for i in range(len(main['annotations'])):
main['annotations'][i]['id'] = i+1
if main['annotations'][i]['id'] > main_annotation_number:
main['annotations'][i]['image_id'] = main['annotations'][i]['image_id'] + main_image_number
#保存在这个路径下的json文件, 可以修改
with open('G:/xiao/dataset_molcreate/create_ann/test/data.json', 'w') as outfile:
json.dump(main, outfile)
1.适用路径中只能有两个json文件,如果有多个,还需要修改的点就是标注信息的图像id,它没有配对好。
2.其他应该没有问题。