龙空技术网

分享将JSON格式的标注资料批量转换成YOLO格式的标注TXT文件

山隐客 107

前言:

目前兄弟们对“我的世界手机版json格式文件”大致比较着重,你们都想要剖析一些“我的世界手机版json格式文件”的相关资讯。那么小编同时在网络上网罗了一些有关“我的世界手机版json格式文件””的相关知识,希望同学们能喜欢,咱们快快来了解一下吧!

如果我们使用百度AI的标注工具对目标识别的训练素材进行了标注,最后导出的会是JSON格式的标注文件,使用以下PYTHON代码,可以将百度AI标注的JSON标注格式转换成YOLO用的标注格式,转换完后可以直接在YOLO里训练使用,如果使用其他的标注工具生成的JSON文件,也可以参考去修改批量生成YOLO用的标注格式。

# -*- coding: utf-8 -*-import jsonimport osfrom PIL import Image"""@Time : 2021/6/3 10:08@Auth : 山隐客****将百度AI的标注资料批量转换成YOLO格式的标注TXT文件****"""def convert(size, box):    print("进入坐标归一化函数")    dw = 1. / (size[0])    dh = 1. / (size[1])    x = (box[0] + box[1]) / 2.0 - 1    y = (box[2] + box[3]) / 2.0 - 1    w = box[1] - box[0]    h = box[3] - box[2]    x = x * dw    w = w * dw    y = y * dh    h = h * dh    return x, y, w, hdef convert_annotation(image_id):    print("进入提取JSON内容和图片尺寸函数,整理数值")    in_file = open(r'd:/yolo5bhouchu/Annotations/%s.json' % (image_id))    #读取百度AI 标注文件JSON文件    image_file='d:/yolo5bhouchu/images/%s.jpeg' % (image_id)   #images目录里存放和标注文件对应的图片文件,读取图片获取图片尺寸    out_file = open(r'd:/yolo5bhouchu/labels/%s.txt' % (image_id), 'w')  #labels目录用来存放生成的YOLO格式的标注TXT文件    img = Image.open(image_file)    w = img.width    h = img.height    print("图片宽度和高度分别为:",w,h)    new_dict = json.load(in_file)    biaoqian_num=len(new_dict['labels'])    bqlist_num = range(biaoqian_num)    for j in bqlist_num:        zbbox =new_dict['labels'][j]        print("读取JSON坐标值:",zbbox)        b = (float(zbbox['x1']), float(zbbox['x2']), float(zbbox['y1']),float(zbbox['y2']))        b1, b2, b3, b4 = b        # 标注越界修正        if b2 > w:            b2 = w        if b4 > h:            b4 = h        b = (b1, b2, b3, b4)        print("修正后的坐标值:",b)        bb = convert((w, h), b)        box_name=zbbox['name']        #以下后厨使用        if box_name=='mask':            cls_id=0        if box_name=='hat':            cls_id=1        if box_name=='clothes':            cls_id=2        if box_name=='no_mask':            cls_id=3        if box_name=='no_hat':            cls_id=4        if box_name=='no_clothes':            cls_id=5        print("开始按yolo格式写入TXT")        out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')        print("YOLO标注转换完毕")jsonfilepath='d:/yolo5bhouchu/Annotations'  #百度AI的JSON标签文件存放目录,使用绝对路径total_json = os.listdir(jsonfilepath)print(total_json)num = len(total_json)list_index = range(num)for i in list_index:    image_name = total_json[i][:-5]    print(image_name)    convert_annotation(image_name)

[作揖]大家好,我是山隐客,感谢朋友们的点赞、关注、评论、收藏。

标签: #我的世界手机版json格式文件