当前位置: 首页 > 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)
http://www.dtcms.com/a/121692.html

相关文章:

  • 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开发板教程---文件的烧写与程序固化
  • 奇安信驻场面试题
  • 三轴云台之惯性测量单元篇
  • SomeIP通讯机制
  • B-tree 的原理源码分析及应用场景等
  • 决策树模型
  • 2025年CCF-C NCA:导航变量多目标粒子群算法NMOPSO,深度解析+性能实测
  • AI时代如何让命令行工具快速智能化?
  • 雷电多开器自动化运行、自动登录APP刷新日用户活跃量
  • MySQL JOIN详解:INNER JOIN与LEFT JOIN的选择与应用
  • 解锁深度学习激活函数
  • LangChain4j(7):Springboot集成LangChain4j实现知识库RAG