1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- import copy
- import json
- import argparse
- import numpy
- import glob
- import os
- from tqdm import tqdm
- def Label_Studio2Labelme(label_Studio_json_dirs, labelme_json_dir):
- labelme_json = {}
- shape_dic = {}
- jsons_path = []
- for labelme_dir in label_Studio_json_dirs:
- list_path = glob.glob(labelme_dir + "/*.json")
- jsons_path.extend(list_path)
- for Label_Studio_json in jsons_path:
- with open(Label_Studio_json, 'r', encoding='utf-8') as f:
- info = json.load(f)
- for json_dic in info:
- if not json_dic['annotations'][0]['result']:
- continue
- shapes_list = []
- labelme_json['version'] = '5.0.1'
- labelme_json['flags'] = {}
- for result_dic in tqdm(json_dic['annotations'][0]['result']):
- # print(len(result_dic))
- points_list = []
- # 进行标签改动
- if result_dic['value']['rectanglelabels'][0] == 'Pseudocode':
- shape_dic['label'] = 'Code'
- else:
- shape_dic['label'] = copy.deepcopy(result_dic['value']['rectanglelabels'][0])
- x1, y1 = result_dic['value']['x'] * result_dic['original_width'] / 100, \
- result_dic['value']['y'] * result_dic['original_height'] / 100
- points_list.append([x1, y1])
- x2, y2 = x1 + result_dic['value']['width'] * result_dic['original_width'] / 100, \
- y1 + result_dic['value']['height'] * result_dic['original_height'] / 100
- points_list.append([x2, y2])
- shape_dic['points'] = points_list
- shape_dic['group_id'] = None
- shape_dic['shape_type'] = result_dic['type'][:9]
- shape_dic['flags'] = {}
- shapes_list.append(copy.deepcopy(shape_dic))
- labelme_json['shapes'] = shapes_list
- labelme_json['imagePath'] = os.path.basename(json_dic['data']['image'])
- labelme_json['imageData'] = None
- labelme_json['imageHeight'] = json_dic['annotations'][0]['result'][0]['original_height']
- labelme_json['imageWidth'] = json_dic['annotations'][0]['result'][0]['original_width']
- labelme_json['updated_by'] = json_dic['updated_by']
- json.dump(labelme_json,
- open(labelme_json_dir + '/' +
- str(os.path.splitext(os.path.basename(json_dic['data']['image']))[0]) + '.json',
- 'w', encoding='utf-8'),
- ensure_ascii=False, indent=2)
- f.close()
- if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('--Label_Studio_json_dirs', type=str,
- nargs="+", default=[])
- parser.add_argument('--Labelme_json_dir', type=str, default='')
- args = parser.parse_args()
- Label_Studio2Labelme(args.Label_Studio_json_dirs, args.Labelme_json_dir)
|