''' @File : mv_featurelines.py @Author : Jiapeng Zhou @Desc : move part of featurelines to another annotation labelme json files (bottom_curve are good, but left_cuff arenot) ''' import os, os.path as osp, sys, pdb, json, shutil, argparse def parse_args(): parser = argparse.ArgumentParser() parser.add_argument('--src-dir', type=str) parser.add_argument('--dst-dir', type=str) args = parser.parse_args() return args def main(): args = parse_args() src_dir = args.src_dir dst_dir = args.dst_dir src_files = sorted([osp.join(src_dir, f) for f in os.listdir(src_dir) if f.endswith('.json')]) dst_files = sorted([osp.join(dst_dir, f) for f in os.listdir(dst_dir) if f.endswith('.json')]) assert len(src_files) == len(dst_files), 'src_files and dst_files should have same length' for idx, (src_file, dst_file) in enumerate(zip(src_files, dst_files)): with open(src_file) as fp: src_json = json.load(fp) with open(dst_file) as fp: dst_json = json.load(fp) src_shapes = src_json['shapes'] dst_shapes = dst_json['shapes'] for src_shape in src_shapes: if src_shape['label'] == 'bottom_curve': dst_shapes.append(src_shape) dst_json['shapes'] = dst_shapes with open(dst_file, 'w') as fp: json.dump(dst_json, fp) print('finish {}/{}'.format(idx+1, len(src_files))) if __name__ == '__main__': main()