labelme标注的多分类数据集转化为YOLO数据集

2023-10-27

1、如何使用脚本

        (此脚本支持多分类的目标检测数据)

        1、修改dir_json为自己生成的coco数据集文件夹目录

        2、修改dir_txt为要放进去Yolo格式标签的文件夹目录

        3、直接运行代码

import os
import json

# labelme标注的json标签文件目录和保存生成的txt标签的文件夹
dir_json = r'D:/PythonProject/fire_detection/VOCdevkit/Json/'
dir_txt = r'D:/PythonProject/fire_detection/VOCdevkit/txt/'
#os.mkdir(dir_txt)

classes2id={}
num=0
jsons=os.listdir(dir_json)
for i in jsons:
    json_path=os.path.join(dir_json,i)
    with open(json_path, 'r',encoding="utf-8") as f:
        json_data = json.load(f)
        #print(json_data['shapes'])
        for j in json_data['shapes']:
            if j['label'] not in classes2id:
                classes2id[j['label']]=num
                num+=1
print(classes2id)


def json2txt(path_json, path_txt):  # 可修改生成格式
    with open(path_json, 'r',encoding='utf-8') as path_json:
        jsonx = json.load(path_json)
        with open(path_txt, 'w+') as ftxt:
            shapes = jsonx['shapes']
            #获取图片长和宽
            width=jsonx['imageWidth']
            height=jsonx['imageHeight']
            for shape in shapes:
               #获取矩形框两个角点坐标
                x1 = shape['points'][0][0]
                y1 = shape['points'][0][1]
                x2 = shape['points'][1][0]
                y2 = shape['points'][1][1]

                dw = 1. / width
                dh = 1. / height
                x=dw *(x1+x2)/2
                y=dh *(y1+y2)/2
                w=dw *abs(x2-x1)
                h = dh * abs(y2 - y1)
                yolo = f"{cat} {x} {y} {w} {h} \n"
                ftxt.writelines(yolo)

list_json = os.listdir(dir_json)
for cnt, json_name in enumerate(list_json):
    if os.path.splitext(json_name)[-1] == ".json":
        path_json = dir_json + json_name
        path_txt = dir_txt + json_name.replace('.json', '.txt')
        json2txt(path_json, path_txt)

2、实现过程

读取所有的.json文件,遍历后生成classes2id字典

classes2id={}
num=0
jsons=os.listdir(dir_json)
for i in jsons:
    json_path=os.path.join(dir_json,i)
    with open(json_path, 'r',encoding="utf-8") as f:
        json_data = json.load(f)
        #print(json_data['shapes'])
        for j in json_data['shapes']:
            if j['label'] not in classes2id:
                classes2id[j['label']]=num
                num+=1
print(classes2id)

 将.json文件转化为.txt文件

    with open(path_json, 'r',encoding='utf-8') as path_json:
        jsonx = json.load(path_json)
        with open(path_txt, 'w+') as ftxt:
            shapes = jsonx['shapes']
            #获取图片长和宽
            width=jsonx['imageWidth']
            height=jsonx['imageHeight']
            for shape in shapes:
               #获取矩形框两个角点坐标
                x1 = shape['points'][0][0]
                y1 = shape['points'][0][1]
                x2 = shape['points'][1][0]
                y2 = shape['points'][1][1]

                dw = 1. / width
                dh = 1. / height
                x=dw *(x1+x2)/2
                y=dh *(y1+y2)/2
                w=dw *abs(x2-x1)
                h = dh * abs(y2 - y1)
                yolo = f"{cat} {x} {y} {w} {h} \n"
                ftxt.writelines(yolo)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

labelme标注的多分类数据集转化为YOLO数据集 的相关文章

随机推荐

  • 【华为OD机试真题 Python语言】46、 猴子爬山

    文章目录 一 题目 题目描述 输入输出 样例1 样例2 二 思路参考 三 代码参考 作者 鲨鱼狼臧 个人博客首页 鲨鱼狼臧 专栏介绍 2023华为OD机试真题 使用Python进行解答 专栏每篇文章都包括真题 思路参考 代码分析 订阅有问题
  • 使用MyBatis中的ScriptRunner来执行sql文件脚本,实现启动自动部署数据库

    1 首先建立数据库连接 配置基本的url drive username和password 将Connection设置成不自动提交 这样才可以使用conn rollback回滚功能 boolean lockSuccess lock tryLo
  • spring boot 最佳实践(一)--使用jackson

    目前java json解析工具有阿里的fastjson google的GSON 以及SpringMVC 默认的解析工具Jackson Maven引入jar包 spring boot starter web默认引入了以下依赖
  • linux远程桌面软软件下载,rdesktop(Linux下面的远程桌面客户端)

    rdesktop是一个在Unix Linux下访问Windows远程桌面的客户端程序 当前 rdesktop所支持的Windows系列版本包括NT 2000 XP 和 2003 通过使用rdesktop所实现的远程桌面协议 RDP 你可以在
  • VMware Centos7 安装Mysql、Node、NVM、Nginx等

    接着开始在VMware中搭建我们的大前端环境 这里我已经在我本机安装好VMware虚拟机了 Windows10 安装 VMware虚拟机并安装Centos7操作系统 一 安装Mysql 1 Mysql介绍 为啥选择Mysql而不选择Orac
  • 常量和变量(含命名规则:)

    常量 运行过程中值不会被改变又叫做字面量 常量可以是任何的基本数据类型 可分为整型数字 浮点数字 字符 字符串和布尔值 语法 宏常量 define 常量名 常量值 const 数据类型 常量名 常量值 变量 运行过程中值会被改变的量 其余同
  • mysql编程界面_MySQL图形界面客户端

    图形界面客户端 使用图形界面客户端操作数据库更直观 方便 下面三个客户端都能操作MySQL 各有各自的优点 1 Navicat Premium 下载安装包下载 关注公众号 轻松学编程 然后回复 navicat 获取 新建连接 建立MySQL
  • STM32读取和显示温湿度

    介绍 本教程全部涉及使用DHT11和STM32单片机进行湿度和温度监控 DHT11是一种湿度和温度传感器 用于测量特定环境或密闭空间中的大气温度和湿度 传感器可以测量0 C至50 C的温度 精度为1 C 它可以测量20 至90 的湿度 精度
  • 从XSS Playload 学习浏览器解码

    首先在学习之前 我们需要先知道一点 服务器在解析编码的时候 首先解析的是html实体编码 第二是URL编码 最后解析的就是编码 HTML实体编码 一个HTML解析器作为一个状态机 他从输入流中获取字符并且按照转换规则转换到另一种状态 在解析
  • 2021-09-30

    sql server 查询数据库中包含某字段的所有的表 select object name id objName Name as colName from syscolumns where name like DeptID and id
  • 龙书-第一章

    龙书 编译原理 恶补一下 但是又要显得有点成果 这样比较有成就感 所以记录一下 大概整个会按照书本的顺序来 主要记录一些觉得有必要的东西 文章目录 龙书 编译原理 1 1 语言处理器 1 2 一个编译器的结构 1 3 程序设计语言的发展历程
  • 数据挖掘学习(一):特征工程

    文章目录 概述 一 特征选择 1 选择合适的特征 1 1 过滤法选择特征 1 2 包装法选择特征 1 3 嵌入法选择特征 2 寻找高级特征 二 特征表达 2 1 缺失值处理 2 2 特殊的特征处理 2 3 离散特征的连续化处理 2 4 离散
  • 合并相同记录字段数据

    生成测试数据create table t id int psid int name varchar 80 insert into t select 1 1 name1 insert into t select 2 1 name2 inser
  • 解决d3dcompiler_42.dll错误找不到等问题

    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题 如果是新手第一时间会认为是软件或游戏出错了 其实并不是这样 其主要原因就是你电脑系统的该dll文件丢失了或者损坏了 这时你只需下载这个d3dcompiler 42 dll文件进行安装
  • C++之单例模式

    文章目录 什么是单例模式 单例模式中的饿汉模式 单利模式中的懒汉模式 什么是单例模式 保证一个类只有一个实例 并提供一个访问它的全局访问点 该实例被所有程序模块共享 单例模式中的饿汉模式 饿汉模式 单例定义的时候就进行实力化 空间换时间的做
  • Android 实现聊天窗口输入框弹起

    实现效果 往下滑会加载历史数据 1 在清单文件中设置
  • php 手写一个完美的守护进程

    php 守护进程原理与实践 前事提要 基本概念 基本特点 在Linux中 大概有三种方式实现脚本后台化 创建守护进程要求 1 设置文件创建屏蔽字 umask 0 2 调用fork 父进程退出 exit 3 子进程调用setsid 函数来创建
  • Linux·网络编程套接字(一)

    目录 预备知识 理解源IP地址和目的IP地址 理解源MAC地址和目的MAC地址 理解源端口号和目的端口号 PORT VS PID 认识TCP协议和UDP协议 网络字节序 socket编程接口 socket常见API sockaddr结构 简
  • SQL Server 数据库中复制一张表数据到另一张表的详细步骤与代码示例

    系列文章目录 文章目录 系列文章目录 前言 一 使用 INSERT INTO 语句 1 准备目标表 2 使用 INSERT INTO 语句 二 使用 SELECT INTO 语句 1 创建目标表 总结 前言 在 SQL Server 数据库
  • labelme标注的多分类数据集转化为YOLO数据集

    1 如何使用脚本 此脚本支持多分类的目标检测数据 1 修改dir json为自己生成的coco数据集文件夹目录 2 修改dir txt为要放进去Yolo格式标签的文件夹目录 3 直接运行代码 import os import json la