Python如何实现xml格式转txt格式
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,本篇内容介绍了"Python如何实现xml格式转txt格式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所
千家信息网最后更新 2025年11月08日Python如何实现xml格式转txt格式
本篇内容介绍了"Python如何实现xml格式转txt格式"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1、前言
最近学习Yolo v5是遇见了个问题,找的数据集全是xml文件,VOC 的标注是 xml 格式的,而YOLO是.txt格式,那么问题就来了,手动提取肯定是不可能的,那只能借用程序解决咯。
2、分析xml、txt数据
这是xml树形结构

这是txt格式

总结:
1.提取object->name、bndbox->xmin,ymin,xmax,ymin
2.格式转化需要用公式转换
YOLO数据集txt格式:
x_center :归一化后的中心点x坐标
y_center : 归一化后的中心点y坐标
w:归一化后的目标框宽度
h: 归一化后的目标况高度
(此处归一化指的是除以图片宽和高)
VOC数据集xml格式
| yolo的四个数据 | xml->txt公式 |
|---|---|
| x_center | ((x_min+x_max)/2-1)/w_image |
| y_center | ((y_min+y_max)/2-1)/h_image |
| w | (x_max-x_min)/w_image |
| h | (y_max-y_min)/h_image |
3、转换过程
定义两个文件夹,train放xml数据, labels放txt数据。
代码解析:
import osimport xml.etree.ElementTree as ETimport iofind_path = './train/' #xml所在的文件savepath='./labels/' #保存文件class Voc_Yolo(object): def __init__(self, find_path): self.find_path = find_path def Make_txt(self, outfile): out = open(outfile,'w') print("创建成功:{}".format(outfile)) return out def Work(self, count): #找到文件路径 for root, dirs, files in os.walk(self.find_path): #找到文件目录中每一个xml文件 for file in files: #记录处理过的文件 count += 1 #输入、输出文件定义 input_file = find_path + file outfile = savepath+file[:-4]+'.txt' #新建txt文件,确保文件正常保存 out = self.Make_txt(outfile) #分析xml树,取出w_image、h_image tree=ET.parse(input_file) root=tree.getroot() size=root.find('size') w_image=float(size.find('width').text) h_image=float(size.find('height').text) #继续提取有效信息来计算txt中的四个数据 for obj in root.iter('object'): #将类型提取出来,不同目标类型不同,本文仅有一个类别->0 classname=obj.find('name').text cls_id = classname xmlbox=obj.find('bndbox') x_min=float(xmlbox.find('xmin').text) x_max=float(xmlbox.find('xmax').text) y_min=float(xmlbox.find('ymin').text) y_max=float(xmlbox.find('ymax').text) #计算公式 x_center=((x_min+x_max)/2-1)/w_image y_center=((y_min+y_max)/2-1)/h_image w=(x_max-x_min)/w_image h=(y_max-y_min)/h_image #文件写入 out.write(str(cls_id)+" "+str(x_center)+" "+str(y_center)+" "+str(w)+" "+str(h)+'\n') out.close() return countif __name__ == "__main__": data = Voc_Yolo(find_path) number = data.Work(0) print(number)4、最后结果对比
创建成功
与真实数据对比误差很小
"Python如何实现xml格式转txt格式"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
文件
格式
数据
公式
目标
不同
成功
中心点
内容
坐标
更多
知识
类型
过程
这是
问题
分析
学习
输出
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
泰兴工业网络技术诚信合作
一梦江湖全部服务器名称
奉贤区技术软件开发常见问题
微信显示服务器异常什么原因
网络安全溯源技术
聚合路由器聚合服务器如何工作的
冒险岛数据库笔记app
万年历的数据库是什么
服务器找不到任务了怎么办
网络安全征求
网络技术对各教师的挑战
react前端数据库
剑网3 服务器连接失败
西安云熙然网络技术有限公司
网络技术与高中英语阅读
能威胁数据库安全的是
计算机网络技术安全性原则
服务器dns通用
服务器 geneva测试
维普数据库检查字段
领逸互联网科技公司
嵌入式软件开发包含哪些
服务器免流搭建教程
ldap服务器下载
服务器 设在美国
在数据库技术中什么称为
盐城营销软件开发价格
服务器访问速度
征兵网显示服务器错误是什么意思
汽车电脑维修软件开发