标签转格式问题之——xml_2_txt.py

import xml.etree.ElementTree as ET#xml 是python自带的package
import osclasses=['walnut']#写自己的分类名
pre_dir='F:/2023walnut/labels'#xml文件所在文件夹
target_dir='F:/2023walnut/yolo'#想要存储txt文件的文件夹
path=os.listdir(pre_dir)for path1 in path:
# path1=r'C:\Users\loadlicb\Desktop\chrome_RTJOXXsYHM.xml'#xml文件路径tree=ET.parse(os.path.join(pre_dir,path1))root=tree.getroot()#这两个步骤将xml文件拆出来了oo=[]for child in root:if child.tag == 'filename':#tag对应的是《》中的内容,text对应的是两个《》中间的部分内容oo.append(child.text)#获得xml文件的名# print(child.text)for i in child:if i.tag == 'width':#获得图片的woo.append(i.text)# print(i.text)if i.tag == 'height':#获得图片的hoo.append(i.text)# print(i.text)if i.tag == 'name':#获得当前框的classoo.append(i.text)# print(i.text)for j in i:if j.tag == 'xmin':#获得当前框的两个对角线上的点的两组坐标oo.append(j.text)# print(j.text)if j.tag == 'ymin':oo.append(j.text)# print(j.text)if j.tag == 'xmax':oo.append(j.text)# print(j.text)if j.tag == 'ymax':oo.append(j.text)# print(j.text)print(oo)filename=oo[0]#读取图片的名和宽高filename=os.path.split(filename)# print(filename)name,extension=os.path.splitext(filename[1])#获取xml名和后缀width=oo[1]dw=1/int(width)height=oo[2]dh=1/int(height)oo.pop(0)oo.pop(0)oo.pop(0)#删除三次oolist的0号元素back=[]# print((len(oo))%5)for i in range(len(oo)//5):for p in range(len(classes)):#划定class的序号if classes[p] == oo[5*i]:#str == strcl=pback.append(cl)x=(int(oo[5*i+1])+int(oo[5*i+3]))/2#oo里的所有元素都是str,数字也是y = (int(oo[5 * i + 2]) + int(oo[5 * i + 4])) / 2#计算标注框的中心点的xy坐标w=int(oo[5*i+3])-int(oo[5*i+1])h=int(oo[5*i+4])-int(oo[5*i+2])#计算标注框的宽高back.append('{:.4f}'.format(x*dw))back.append('{:.4f}'.format(y * dh))back.append('{:.4f}'.format(w * dw))back.append('{:.4f}'.format(h * dh))# back.append(y*dh)# back.append(w*dw)# back.append(h*dh)#转换到0-1区间print(back)# dir=r'C:\Users\loadlicb\Desktop'#label文件夹名file=open(os.path.join(target_dir,name+'.txt'),'w')for i in range(len(back)):l=' 'if (i+1)%5==0:l='\n'file.writelines(str(back[i])+l)#完成了,现在进行批量操作修改
#完成

这个脚本中只需要修改三处地方:

classes=['walnut']#写自己的分类名

pre_dir='F:/2023walnut/labels'#xml文件所在文件夹

target_dir='F:/2023walnut/yolo'#想要存储txt文件的文件夹


——————————————今天不学习,明天变垃圾!—————————————

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

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

相关文章

[变压器故障诊断分类及预测】基于Elman神经网络

课题名称:基于Elman神经网络的变压器故障诊断分类及预测 版本日期:2024-02-10 运行方式:直接运行Elman0507.m文件 代码获取方式:私信博主或QQ:491052175 模型描述: 对变压器油中溶解气体进行分析是变压…

Noise Conditional Score Networks(NCSN)学习

参考: [1] https://zhuanlan.zhihu.com/p/597490389 [2] https://www.zhangzhenhu.com/aigc/Score-Based_Generative_Models.html TOC 1 基于分数的生成模型1.1 简介和动机1.2 Score Matching及其改进1.2.1 Score Matching1.2.2 Sliced score matching(不…

XSS_lab(level1-level5)

level1 直接输入页面没有发现输入框&#xff0c;观察url发现有传参 尝试修改传参为&#xff1a;<script>alert(1)</script> 过啦&#xff01; level2 页面中有输入框&#xff0c;尝试构建语句&#xff1a;<script>alert(1)</script>,传输后查看源代…

国际心理学导师-叶子文JeffreyYip的《意识地图》

“物质就是能量。” ---爱因斯坦 “時常保持觉知&#xff0c;有意识地发现情绪起伏 你随时都能翻转人生 做自己人生的导演 当你频率高时&#xff0c;万事万物为你而来” ---大卫霍金斯 叶子文-《意识地图》&#xff1a;高阶心理学课程 宇宙间万物的本质是能量。一切都靠能量…

Java基础---lambda表达式

一、为什么要引入lambda表达式 lambda 表达式是一个可传递的代码块 &#xff0c; 可以在以后执行一次或多次 。 在介绍lambda表达式之前&#xff0c;我们看一下&#xff0c;以前&#xff0c;我们对于一个问题的通常写法。 假设你已经了解了如何按指定时间间隔完成工作&#xf…

js字符串转json的3种方法

1.eval方式解析 function strToJson(str){var json eval("(" str ")");return json;}console.log(strToJson("{int:1, string:demo}")); 运行截图&#xff1a; 注&#xff1a; 记得别忘了str两旁的小括号。 永远不要使用 eval !!! eval() 是一…

611. 有效三角形的个数 - 力扣

1. 题目 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 2. 示例 3. 分析 利用已升序了的数组通过 a b > c 这条公式找出符合要求的三元组&#xff0c;利用这个公式的前提是三条边为从小到大&#xff0c;再利用单调性快速统计…

STM32 (1)

1.基本信息 stm32是由ST公司生产的一种32位微控制器&#xff08;单片机&#xff09;。 1.1 各种型号 stm32是32位单片机的总称&#xff0c;有多种不同的系列。 32即用32个比特位表示一个地址&#xff0c;寻址范围&#xff1a;0x00000000 --0xffffffff (4GB) 1.2 存储密度 …

Mysql事务的两段式提交

binlog和redo log区别 为了满足Mysql的事物ACID特性&#xff0c;InnoDB引入了redo log和 undo log日志文件。为了满足主从同步Mysql引入了binlog日志文件。redo log和binlog文件都保存的数据库对数据库的修改&#xff0c;但是binlog和redo log本质上是不一样的&#xff1a; r…

UE5中实现后处理深度描边

后处理深度描边可以通过取得边缘深度变化大的区域进行描边&#xff0c;一方面可以用来做角色的等距内描边&#xff0c;避免了菲尼尔边缘光不整齐的问题&#xff0c;另一方面可以结合场景扫描等特效使用&#xff0c;达到更丰富的效果&#xff1a; 后来解决了开启TAA十字线和锯齿…

XXL-Job的基本使用

一、市面上常见的任务调度产品 针对分布式任务调度的需求&#xff0c;市场上出现了很多的产品: 其中XXL-job 是我们经常使用的任务调度平台,XXL这三个英文字母.是以作者名许雪里命名的。 可以前往 Gitee 地址进行下载使用 https://gitee.com/xuxueli0323/xxl-job.git二、XXL-J…

使用`paddle.nn.Layer`自定义网络教程

文章目录 使用paddle.nn.Layer自定义网络教程1. 概念介绍2. 数据处理3. 搭建一个完整的深度学习网络4. 使用paddle.nn.Layer构建深度学习网络5. 利用paddle.nn.Layer进行子层的访问6. 修改paddle.nn.Layer层的成员变量7. 存储模型的参数8. 总结 使用paddle.nn.Layer自定义网络教…

LockBit病毒入侵揭秘:如何防范与应对

在数字时代&#xff0c;随着科技的飞速发展&#xff0c;网络安全问题愈发凸显。恶意软件和勒索软件等网络威胁正不断演变&#xff0c;其中一款备受关注的勒索软件就是LockBit。本文将深入介绍LockBit的特征、攻击手段、演进历程以及对网络安全的威胁。 01 主要特征 LockBit是…

算法知识(java)随笔

1: 保留指定的小数为 printf("%.2f\n", ret) 和c语言类似 // 怎么保留小数 System.out.printf("%.2f\n", 1.0/3); 2: 在写小数二分的时候 加入让结果保留6位数 那么 while(r - l > 1e-8) 3: java Map里面之前写的代码: /*** 也就是 统计x在map里面的…

第二十一周周报

文献阅读&#xff1a;Recent Advances of Monocular 2D and 3D Human Pose Estimation: A Deep Learning Perspective 摘要&#xff1a;在本文中&#xff0c;作者提供了一个全面的 2d到3d视角来解决单目人体姿态估计的问题。首先&#xff0c;全面总结了人体的二维和三维表征。…

腾讯云Windows轻量应用服务器的默认密码是什么,以及如何重置?

首先&#xff0c;腾讯云轻量应用服务器的默认用户名是没有设置密码的&#xff0c;首次登录时需要重置密码。这意味着如果你的轻量应用服务器是腾讯云的&#xff0c;那么默认密码是不存在的&#xff0c;需要通过重置密码来获得一个新的密码。 关于如何重置密码&#xff0c;有几…

chatgpt新版本api的调用

chatgpt新版本api的调用 原始版本调用api方式&#xff1a;新版调用chatgpt-api的方式&#xff1a; 原始版本调用api方式&#xff1a; import openaiopenai.api_key "{上面复制的key}"completion openai.ChatCompletion.create(model"gpt-3.5-turbo",mes…

Spring El表达式官方文档学习

文章目录 推荐一、概述1、什么是SpEL2、SpEL能做什么 二、SpEL表达式使用1、文字表达式2、属性, 数组, List, Map,和 索引&#xff08;1&#xff09;属性操作&#xff08;2&#xff09;数组和List&#xff08;3&#xff09;Map 3、内嵌List4、内嵌Map5、构建数组6、调用类的方法…

Windows的Linux化持续推进中

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Java基础 - 6 - 面向对象(二)

Java基础 - 6 - 面向对象&#xff08;一&#xff09;-CSDN博客 二. 面向对象高级 2.1 static static叫做静态&#xff0c;可以修饰成员变量、成员方法 2.1.1 static修饰成员变量 成员变量按照有无static修饰&#xff0c;分为两种&#xff1a;类变量、实例变量&#xff08;对象…