YOLO数据集制作(一)|Labelme标注的矩形框json文件转txt

        以下教程用于将使用Labelme软件标注生成的json格式文件转成YOLO使用的txt格式,适用场景:矩形框

        使用方法:将json文件夹路径填到json_dir后, 将保存转化后txt的路径填入txt_dir后,运行即可转化。

        运行完成后会生成labelclassess.txt文件,其中保存了标签名称,这里的名称与转换后的txt对应。

import os
import cv2
import glob
import json
import numpy as np
from tqdm import tqdm# 参考链接 https://zhuanlan.zhihu.com/p/622246547# 将labelme_json标注转yolo_txt
def convert(size, box):"""convert [xmin, xmax, ymin, ymax] to [x_centre, y_centre, w, h]"""dw = 1. / size[0]dh = 1. / size[1]x = (box[0] + box[1]) / 2.0y = (box[2] + box[3]) / 2.0w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn [x, y, w, h]if __name__ == "__main__":class_names = []# json文件夹路径json_dir = r"O:\DeepLearningTool\01_handle_dataset\dataset\object\image"# 转化后txt的保存路径txt_dir = r"O:\DeepLearningTool\01_handle_dataset\dataset\object\label"if not os.path.exists(txt_dir):os.makedirs(txt_dir, exist_ok=True)json_pths = glob.glob(json_dir + "/*.json")for json_pth in tqdm(json_pths,  desc='Processing'):f1 = open(json_pth, "r")json_data = json.load(f1)img_pth = os.path.join(json_dir, json_pth.replace("json", "jpg"))img = cv2.imread(img_pth)h, w = img.shape[:2]tag = os.path.basename(json_pth)out_file = open(os.path.join(txt_dir, tag.replace("json", "txt")), "w")label_infos = json_data["shapes"]for label_info in label_infos:label = label_info["label"]points = label_info["points"]if len(points) >= 3:points = np.array(points)xmin, xmax = max(0, min(np.unique(points[:, 0]))), min(w, max(np.unique(points[:, 0])))ymin, ymax = max(0, min(np.unique(points[:, 1]))), min(h, max(np.unique(points[:, 1])))elif len(points) == 2:x1, y1 = points[0]x2, y2 = points[1]xmin, xmax = min(x1, x2), max(x1, x2)ymin, ymax = min(y1, y2), max(y1, y2)else:continuebbox = [xmin, xmax, ymin, ymax]bbox_ = convert((w,h), bbox)if label not in class_names:class_names.append(label)cls_id = class_names.index(label)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bbox_]) + '\n')with open(txt_dir + 'classes.txt', 'w') as f:for i in class_names:f.write(i + '\n')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/9788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

io流、字节流字符流区别

想象你正在做一道菜,需要准备材料和烹饪步骤。IO流就像是你在做菜时使用的工具,而字节流和字符流则是不同类型的工具,适合不同的操作。 首先,字节流就像是你使用的普通厨具,比如刀、砧板等。它们可以处理任何类型的食…

Linux-解压缩文件命令(gzip、zip、unzip、tar、jar)

目录 1、压缩解压命令 1.1 gzip、gzcat、gunzip 1.2 bzip2、bzcat、bunzip2 1.3 zip和unzip 2、tar命令 3、jar命令 1、压缩解压命令 1.1 gzip、gzcat、gunzip gzip 命令 压缩文件后缀.gz gzcat 用来显示压缩的文本文件内容 gunzip 用来解压文件 把/home目录下的t…

使用向量数据库 Zilliz Cloud 时常用到的术语和概念

AUTOINDEX 为满足用户不同需求,Zilliz Cloud 提供 2 种类型的集群 CU:性能型和容量型。但是,为不同类型 CU 集群中的 Collection 创建索引时,通常需要根据所选择的 CU 类型调整索引参数。为了方便创建索引,免去调节参数的麻烦,Zilliz Cloud 使用 AUTOINDEX 的索引类型。…

OpenAI 正在开发一种可以防止版权诉讼的工具

OpenAI 正在开发一种名为 Media Manager 的工具,该工具将使内容创建者和所有者能够确定他们是否愿意将自己的内容用于 ML 研究和 AI 模型训练。 Media Manager 将做什么? 明年推出的 Media Manager 将使内容创作者和所有者能够更好地控制他们的工作是否…

Oracle体系结构初探:闪回技术

在Oracle体系结构初探这个专栏中,已经写过了REDO、UNDO等内容。觉得可以开始写下有关备份恢复的内容。闪回技术 — Oracle数据库备份恢复机制的一种。它可以在一定条件下,高效快速的恢复因为逻辑错误(误删误更新等)导致的数据丢失…

岩点×数说故事×小红书 | 发布《中国攀岩行业分析报告》

从下班健身到下班攀岩,从“鸡娃”到岩馆“溜娃”,被奥运“正名”的攀岩运动,在国内熬过了萌芽阶段,悄然开出了花。2023年,各类重磅攀岩赛事重启、线下岩馆疯狂扩张,小众攀岩正式进入大众视野,风…

249 基于matlab的MED、OMEDA、MOMEDA、MCKD信号处理方法

基于matlab的MED、OMEDA、MOMEDA、MCKD信号处理方法。最小熵反褶积(MED),最优最小熵反卷积调整卷积 (OMEDA),多点最优最小熵解卷积调整(Multipoint Optimal Minimum Entropy Deconvolution Adjusted,MOMEDA),最大相关峭…

Vue2 组件通信方式

props/emit props 作用&#xff1a;父组件通过 props 向子组件传递数据parent.vue <template><div><Son :msg"msg" :pfn"pFn"></Son></div> </template><script> import Son from ./son export default {name: …

winform图书管理系统

winform图书管理系统说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 图书管理员 读者管理 图书管理 添加 修改 删除 查看 入库 书册列表 书册管理用户管理退出 借书 还书 系统管理员 修改图书管理权限 项目获取&#xff1a;…

LeetCode 209 长度最小的子数组(滑动窗口and暴力)

、 法一&#xff1a;滑动窗口 //使用滑动窗口来解决问题 //滑动窗口的核心点有&#xff1a; /*1.窗口内是什么&#xff1f;2.如何移动窗口的起始位置&#xff1f;3.如何移动窗口的结束位置&#xff1f;4.两个指针&#xff0c;怎么判断哪个指针是终止指针&#xff0c;哪个指针…

代码随想录算法训练营第六十天| LeetCode647. 回文子串 、516.最长回文子序列

一、LeetCode647. 回文子串 题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0647.%E5%9B%9E%E6%96%87%E5%AD%90%E4%B8%B2.html 状态&#xff1a;已解决 1.思路 这道题我只想出来了暴力解法&#xff0c;动规解法并没有想出来。根据视频讲解才把它想出来。…

针对macOS上的maven安装配置

这篇博客将向读者介绍如何安装和配置Maven。Maven是一个强大的项目管理工具&#xff0c;广泛用于Java项目的构建、依赖管理和项目报告生成。它可以极大地简化项目的构建过程&#xff0c;并帮助开发人员管理项目的各种依赖项。 什么是Maven&#xff1f; Maven是一个基于项目对…

C++——命名空间

c ——命名空间 前言一.命名空间命名空间的进一步拓展 二.io流特性 前言 ** 好久不见&#xff0c;甚是想念~今天我们讲解的是关于c命名空间的一些知识点&#xff0c;这只是开胃小菜哦&#xff0c;期待我们后面更深入知识的灵魂碰撞吧 ** 一.命名空间 怎么形容呢~命名空间出现…

Rocketmq如何保证消息不丢失和幂等性

生产者 生产者通过RocketMQ提供的事务消息&#xff08;两阶段提交&#xff09;能保证消息的一致性。 第一阶段给Broker发送一个半事务消息&#xff0c;半事务消息是不能消费的消息&#xff0c;broker已经收到生产者发送的消息&#xff0c;但是并未收到生产者的二次确认&#x…

SpringBoot异步接口实现:提高系统的吞吐量

前言 Servlet 3.0之前&#xff1a;每一次Http请求都由一个线程从头到尾处理。 Servlet 3.0之后&#xff0c;提供了异步处理请求&#xff1a;可以先释放容器分配给请求的线程与相关资源&#xff0c;减轻系统负担&#xff0c;从而增加服务的吞吐量。 在springboot应用中&#…

JavaScript使用 BigInt

在 JavaScript 中&#xff0c;最大的安全整数是 2 的 53 次方减 1&#xff0c;即 Number.MAX_SAFE_INTEGER&#xff0c;其值为 9007199254740991。这是因为 JavaScript 中使用双精度浮点数表示数字&#xff0c;双精度浮点数的符号位占 1 位&#xff0c;指数位占 11 位&#xff…

2024C题生物质和煤共热解问题的研究 详细思路

背景 随着全球能源需求的不断增长和对可再生能源的追求&#xff0c;生物质和煤共热解作为一种潜在的能源转化技术备受关注。生物质是指可再生能源&#xff0c;源自植物和动物的有机物质&#xff0c;而煤则是一种化石燃料。** 在共热解过程中&#xff0c;生物质和煤在高温和缺氧…

Linux系统调用mmap

0 前言 《Linux系统调用》整体介绍了系统调用,本文重点分析其中mmap的实现与使用方法。 1 定义 1.1 x86 (1)linux-2.6.31- 采用老式定义方法: asmlinkage long sys_mmap(unsigned long addr, unsigned long len,unsigned long prot, unsigned long flags,unsigned long…

记录解决问题--redis ssl连接

1.问题场景 springboot连接redis启动报错&#xff0c;感觉是没连上redis&#xff0c;本地是正常启动的&#xff0c;但是本地不是ssl连接。 2.redis ssl连接知识 ①一般不开启ssl的连接&#xff0c;直接连接即可&#xff0c;有密码输密码。 ②不受信的ssl连接&#xff0c;也就…

unity基础(二)

debug方法 Debug.Log(" 一般日志 ");Debug.LogWarning(" 警告日志 ");Debug.LogError(" 错误日志 ");// Player Informationstring strPlayerName "Peter";int iPlayerHpValue 32500;short shPlayerLevel 10;long lAdvantureExp 1…