最近查csdn关于labelme提取json矩形框的坐标比较少,自己写了点处理数据的代码,右键run即可
需要更改的地方
dir_json = ‘D:/JiaWong_result/json/’
dir_txt = ‘D:/JiaWong_result/res/’
改你自己的文件夹!是文件夹不是文件
第一步:写个代码看看路径对不对
import os
dir_json = 'D:/JiaWong_result/json/'
dir_txt = 'D:/JiaWong_result/res/'
if not os.path.exists(dir_txt):
os.makedirs(dir_txt)
list_json = os.listdir(dir_json)
for cnt,json_name in enumerate(list_json):
print('cnt=%d,name=%s'%(cnt,json_name))
path_json = dir_json + json_name
path_txt = dir_txt + json_name.replace('.json','.txt')
print(path_json,path_txt)
cnt=7556,name=7557.json
D:/JiaWong_result/json/7557.json D:/JiaWong_result/res/7557.txt
用来检测是否正确提取了文件的路径,看起来对了
第二步:批量处理
#-*- coding : utf-8 -*-
# coding: utf-8
import os
import json
import numpy as np
dir_json = 'D:/JiaWong_result/json/'
dir_txt = 'D:/JiaWong_result/res/'
# 单个json文件提取坐标至txt
def json2txt(path_json,path_txt):
with open(path_json,'r',encoding="utf_8") as path_json:
jsonx=json.load(path_json)
with open(path_txt,'w+') as ftxt:
for shape in jsonx['shapes']:
if (shape['shape_type'] == 'rectangle' and shape['label'] == 'citrus'):
xy=np.array(shape['points'])
# label=str(shape['label'])
strxy = ''
for m,n in xy:
strxy+=str(m)+' '+str(n)+' '
# strxy+=label
ftxt.writelines(strxy+"n")
if __name__ == "__main__":
#批量转换
if not os.path.exists(dir_txt):
os.makedirs(dir_txt)
list_json = os.listdir(dir_json)
for cnt,json_name in enumerate(list_json):
print('cnt=%d,name=%s'%(cnt,json_name))
path_json = dir_json + json_name
path_txt = dir_txt + json_name.replace('.json','.txt')
print(path_json,path_txt)
json2txt(path_json, path_txt)
points全部正确提取了



