跑模型——labelme的json文件转成yolo使用的txt文件(语义分割)

news/2024/7/10 23:59:41 标签: json, YOLO

前言
将labelme多边形标注的json文件转换成yolo使用的txt文件

import os
import json
import numpy as np
from tqdm import tqdm

#实现函数
def json2txt(path_json, path_txt):  # 可修改生成格式
    with open(path_json, 'r') as path_json:
        jsonx = json.load(path_json)
        with open(path_txt, 'w+') as ftxt:
            width,height = jsonx['imageWidth'],jsonx['imageHeight']
            for shape in jsonx['shapes']:
                label_name = shape['label']
                label_index = str(classes_name.index(label_name))
                label = label_index + ' '
                xy = np.array(shape['points'])
                strxy = ''
                for x, y in xy:
                    x = float(x)/width
                    y = float(y)/height
                    strxy += str(x) + ' ' + str(y) + ' '

                label += strxy
                ftxt.writelines(label + "\n")

dir_json = 'D:/data_val/phone_1_dai/new/output/'  # json存储的文件目录 这里需要在最后加'/'
dir_txt = 'D:/data_val/phone_1_dai/new/txt'  # txt存储目录

#如果不存在则创建txt存储目录
os.makedirs(dir_txt,exist_ok=True)
list_json = os.listdir(dir_json)

#标签名
classes_name = ["_background_", 'phone']

pbar = tqdm(total=len(list_json))
error_list=[]
for cnt, json_name in enumerate(list_json):
    try:
        # print('cnt=%d,name=%s' % (cnt, json_name))
        path_json = dir_json + json_name
        path_txt = dir_txt +'/'+ json_name.replace('.json', '.txt')
        json2txt(path_json, path_txt)
    except Exception as e:
        # print('cnt=%d,name=%s' % (cnt, json_name))
        error_list.append({json_name:e})
    pbar.update(1)


for error in error_list:
    print(error)
print(f"error length={len(error_list)}")

如果有什么不懂的,可以在评论区底下评论哦,我会努力解答的

欢迎大家点赞或收藏,点赞或收藏可以鼓励作者更新哟~


http://www.niftyadmin.cn/n/5479384.html

相关文章

数字乡村发展:构建农村现代化发展新格局

目录 一、引言 二、数字乡村发展的重要意义 三、数字乡村发展的主要内容 (一)农业数字化 (二)农村电商发展 (三)乡村治理数字化 (四)乡村文化数字化 四、数字乡村发展的路径…

TCP协议简单总结

TCP:传输控制协议 特点:面向连接、可靠通信 TCP的最终目的:要保证在不可靠的信道上实现可靠的传输 TCP主要有三个步骤实现可靠传输:三次握手建立连接,传输数据进行确认,四次挥手断开连接 三次握手建立可靠…

python——运算符

运算符 #mermaid-svg-oCFQRJw4cBUbAQv5 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-oCFQRJw4cBUbAQv5 .error-icon{fill:#552222;}#mermaid-svg-oCFQRJw4cBUbAQv5 .error-text{fill:#552222;stroke:#552222;}#me…

智过网:报考中级注册安全工程师需要什么条件?

随着社会的快速发展和科技的日新月异,安全生产问题越来越受到人们的关注。中级注册安全工程师作为专业安全管理人才,其职责与角色日益凸显。那么,想要报考中级注册安全工程师,需要满足哪些条件呢? 首先,报考…

机器学习 —— 使用机器学习进行情感分析 详细介绍版

机器学习 —— 使用机器学习进行情感分析 详细介绍版 机器学习 —— 使用机器学习进行情感分析 演示版 目录 一、 绪论二、 数据处理1. 构建CSV文档2. 构建模型前的思考2.1. 问题2.2. 解决方法 3. 读取数据4. 用正则表达式来进行对特定符号的剔除5. 使用口袋模型进行文本处理和…

git合并冲突

git合并冲突 问题描述 Auto-merging mes5server/mes5j.json Auto-merging mes5server/mes5j.json CONFLICT (content): Merge conflict in mes5server/mes5j.json Automatic merge failed; fix conflicts and then commit the result.原因 要合并的两个分支改动了同一份文件…

宝塔的nginx保活(守护)自用

自己用的服务器盒子,刷的海思,宝塔可能有点小问题,因为是朋友给的,剩下的问题就自己解决吧。 整体运行还算稳定,因为我只跑跑nginx/php/docker(mysql跑不了),性能勉强够用&#xff…

基于java+springboot+vue实现的农产品智慧物流系统(文末源码+Lw)23-239

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱,出错率高,信息安全性差&#…