python实现批量json标签文件转yolo格式标签
做深度学习,难免会遇到各种各样的训练数据,当然数据标签也是五花八门,我们需要写脚本来做各种数据格式转换,比如本文分享的时json格式标签批量转化为yolo格式标签。超级好用,效率超级高,学好python,能提高工作效率!
·
文章目录
前言
做深度学习,难免会遇到各种各样的训练数据,当然数据标签也是五花八门,我们需要写脚本来做各种数据格式转换,比如本文分享的时json格式标签批量转化为yolo格式标签。话不多说,直接上完整代码,需要的朋友,慢慢享用,感谢给个三连,后续继续分享好用的脚本工具!
一、json转yolo格式
#批量json转yolo
import json
import os
def convert(img_size, box):
x1_center = box[0] + (box[2]-box[0]) / 2.0
y1_center = box[1] + (box[3]-box[1]) / 2.0
w_1 = box[2] - box[0]
h_1 = box[3] - box[1]
x1_normal = x1_center / img_size[0]
y1_normal = y1_center / img_size[1]
w_1_normal = w_1 / img_size[0]
y_1_normal = h_1 / img_size[1]
return (x1_normal, y1_normal, w_1_normal, y_1_normal)
def decode_json(json_floder_path, json_name):
txt_name = 'F:/DL_xian_data/A_yolo/' + json_name[0:-5] + '.txt'
txt_file = open(txt_name, 'w')
json_path = os.path.join(json_floder_path, json_name)
data = json.load(open(json_path, 'r', encoding='utf-8'))
img_w = data['imageWidth']
img_h = data['imageHeight']
for i in data['shapes']:
if (i['shape_type'] == 'rectangle' and i['label'] == '1'):
x1 = float(i['points'][0][0])
y1 = float(i['points'][0][1])
x2 = float(i['points'][1][0])
y2 = float(i['points'][1][1])
print(x1)
print(y1)
print(x2)
print(y2)
print(img_w)
print(img_h)
bb = (x1, y1, x2, y2)
bbox = convert((img_w, img_h), bb)
txt_file.write( '0' + " " + " ".join([str(i) for i in bbox]) + '\n')
if __name__ == "__main__":
json_floder_path = 'F:/DL_xian_data/A_json' #改成自己的json文件存储路径
json_names = os.listdir(json_floder_path)
for json_name in json_names:
decode_json(json_floder_path, json_name)
二、总结
超级好用,效率超级高,学好python,能提高工作效率!觉得还不错的感谢关注收藏,后续还会继续分享好用的数据处理脚本。
更多推荐
已为社区贡献7条内容
所有评论(0)