Python:批量将 Json 文件的1个字段读入 txt 文件
2018-07-27 本文已影响35人
谢小帅
使用 labelme 标注图片生成的 json 文件
现在想提取 shapes 字段中的多边形顶点坐标,存入 txt 文件
批量转化
import json
import os
from glob import glob
def custombasename(fullname):
return os.path.basename(os.path.splitext(fullname)[0])
IN_PATH = 'C:/Users/Shuai/Desktop/US_mid/labelJson'
OUT_PATH = 'C:/Users/Shuai/Desktop/US_mid/labelTxt'
file_list = glob(IN_PATH + '/*.json')
for i in range(len(file_list)):
with open(file_list[i]) as f:
label_str = f.read()
label_dict = json.loads(label_str) # json文件读入dict
# 输出 txt 文件的路径
out_file = OUT_PATH + '/' + custombasename(file_list[i]) + '.txt'
# 写入 poly 四点坐标 和 label
fout = open(out_file, 'w')
out_str = ''
for shape_dict in label_dict['shapes']:
points = shape_dict['points']
for p in points:
out_str += (str(p[0]) + ' ' + str(p[1]) + ' ')
out_str += shape_dict['label'] + ' 0\n'
fout.write(out_str)
fout.close()
print('%d/%d' % (i + 1, len(file_list)))