当前位置: 首页 > news >正文

json 转 txt 用于 yolo 训练(可适用多边形标注框_python)

json 转 txt 用于 yolo 训练(可适用多边形标注框_python)

import json
import os
import argparse
from tqdm import tqdm
 
 
def convert_label_json(json_dir, save_dir, classes):
    json_paths = os.listdir(json_dir)
    classes = classes.split(',')
 
    for json_path in tqdm(json_paths):
        # for json_path in json_paths:
        path = os.path.join(json_dir, json_path)
        try:
            with open(path, 'r', encoding='utf-8') as load_f:
                json_dict = json.loads(load_f.read())
        except json.JSONDecodeError:
            print(f"Error decoding file {path}. Skipping.")
            continue
 
        # with open(path, 'r', encoding='utf-8') as load_f:
        #     json_dict = json.load(load_f)
        h, w = json_dict['imageHeight'], json_dict['imageWidth']
 
        # save txt path
        txt_path = os.path.join(save_dir, json_path.replace('json', 'txt'))
        txt_file = open(txt_path, 'w')
 
        for shape_dict in json_dict['shapes']:
            label = shape_dict['label']
            label_index = classes.index(label)
            points = shape_dict['points']
 
            points_nor_list = []
 
            for point in points:
                points_nor_list.append(point[0] / w)
                points_nor_list.append(point[1] / h)
 
            points_nor_list = list(map(lambda x: str(x), points_nor_list))
            points_nor_str = ' '.join(points_nor_list)
 
            label_str = str(label_index) + ' ' + points_nor_str + '\n'
            txt_file.writelines(label_str)
 
 
if __name__ == "__main__":
    """
    python json2txt_nomalize.py --json-dir my_datasets/color_rings/jsons --save-dir my_datasets/color_rings/txts --classes "duck"
    """
    parser = argparse.ArgumentParser(description='json convert to txt params')
    parser.add_argument('--json-dir', type=str, default=r'D:\labels',
                        help='json path dir')
    parser.add_argument('--save-dir', type=str, default=r'D:\转换后的文件',
                        help='txt save dir')
    parser.add_argument('--classes', type=str, default='Long,Medium,Short,Debris', help='classes')
    args = parser.parse_args()
    json_dir = args.json_dir
    save_dir = args.save_dir
    classes = args.classes
    convert_label_json(json_dir, save_dir, classes)

相关文章:

  • HOW - React Developer Tools 调试器
  • SpringBoot和微服务学习记录Day1
  • 决策树+泰坦尼克号生存案例
  • 强化学习原理一
  • 本地部署 opik
  • 卡码网54.替换数字
  • 紫光展锐5G SoC T8300:影像升级,「定格」美好世界
  • 用户画像(https://github.com/memodb-io/memobase)应用
  • 神经网络 - 关于简单的激活函数的思考总结
  • Java-对比两组对象找出发生变化的字段工具-支持枚举映射-支持时间-支持显示对应字段中文描述-嵌套list等场景
  • 淘宝API接口:淘宝API接口概述以及对开发者的具体帮助
  • SSRF漏洞技术解析与实战防御指南
  • 【Git 常用操作指令指南】
  • 汽车车窗升降系统全生命周期耐久性验证方案研究
  • Git 的进阶功能和技巧
  • git强制更新本地分支
  • TryhackMe WhatsYourName:题解
  • 都江堰与郑国渠
  • TQTT_KU5P开发板教程---文件的烧写与程序固化
  • 奇安信驻场面试题
  • 想做网站怎么做/2024免费网站推广大全
  • 容桂销售型网站建设/广州新一期lpr
  • 网站建设及推广开发/网站开发的流程
  • 广州网站设计制作公司/湖南正规seo优化报价
  • 四川网站建设公司/百度站长管理平台
  • 网站建设友链交换/抖音seo怎么做的