赞
踩
原始数据集文件夹中图片格式为bmp,标注文件为json,图片和标注文件放在同一个文件夹下面,将json转为xml格式,图片和标注文件分别存放在一个文件夹下面。
headstr = """\ <annotation> <folder>VOC</folder> <filename>%s</filename> <source> <database>My Database</database> <annotation>COCO</annotation> <image>flickr</image> <flickrid>NULL</flickrid> </source> <owner> <flickrid>NULL</flickrid> <name>company</name> </owner> <size> <width>%d</width> <height>%d</height> <depth>%d</depth> </size> <segmented>0</segmented> """ objstr = """\ <object> <name>%s</name> <pose>Unspecified</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>%d</xmin> <ymin>%d</ymin> <xmax>%d</xmax> <ymax>%d</ymax> </bndbox> </object> """ tailstr = '''\ </annotation> ''' def write_xml(xml_path,head,labels,bboxs,tail): f = open(xml_path,'w') f.write(head) for i in range(len(labels)): bbox = bboxs[i] f.write(objstr % (labels[i],bbox[0],bbox[1],bbox[2],bbox[3])) f.write(tail) def json_to_xml(json_file, xml_file): with open(json_file, 'r') as f: data = json.load(f) labels = [] bboxs = [] for shape in data['shapes']: label = shape['label'] labels.append(label) xmin = int(shape['points'][0][0]) ymin = int(shape['points'][0][1]) xmax = int(shape['points'][1][0]) ymax = int(shape['points'][1][1]) bboxs.append([xmin, ymin, xmax, ymax]) image_name = data['imagePath'] imageWidth = data['imageWidth'] imageHeight = data['imageHeight'] head = headstr % (image_name,imageWidth, imageHeight, 3) tail = tailstr write_xml(xml_file, head, labels, bboxs, tail) import os, shutil from tqdm import tqdm ori_path = "E:/projects/20240702181159-1Fs/" img_path = "E:/projects/datasets/img/" xml_path = "E:/projects/datasets/ann/" for file in tqdm(os.listdir(ori_path)): if '.json' in file: json_to_xml(os.path.join(ori_path, file), os.path.join(xml_path, file.replace('json', 'xml'))) else: shutil.copy(os.path.join(ori_path, file), os.path.join(img_path, file))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。