python生成xml格式字符串,python xml文件转化为excel
VOC的标签是xml格式的,而YOLO是。txt格式,所以要实现VOC数据集到YOLO数据集的转换,只能用代码。所以本文介绍了Python中xml转txt的示例代码,有需要的可以参考一下。
00-1010 1、前言2、xml和txt数据分析3、转换过程4、最终结果对比。
目录
最近学习Yolo v5遇到一个问题。我找到的数据集都是xml文件,VOC标签都是xml格式的,而YOLO是在。txt格式。那么问题来了,手工提取肯定不行,只能借用程序解决。
1、前言
这是一个xml树结构
这是txt格式
总结:
1.选择对象名称、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 _ imagey _ center((y _ min y _ max)/2-1)/h _ imagew(x _ max-x _ min)/w _ imageh(y _
2、分析xml、txt数据
定义了两个文件夹,train用于xml数据,labels用于txt数据。
代码解析:
导入操作系统
将xml.etree.ElementTree作为ET导入
导入io
其中find_path=的文件。/train/ #xml位于
保存路径=。/labels/ #保存文件
类别Voc_Yolo(对象):
def __init__(self,find_path):
self.find_path=find_path
def Make_txt(self,outfile):
out=open(outfile, w )
打印(成功创建:{} 。格式(输出文件))
退回去
定义工作(自我,计数):
#查找文件路径
对于os.walk(self.find_path):中的根目录、目录和文件
#在文件目录中查找每个xml文件
对于文件:中的文件
#记录已处理的文件
计数=1
#输入和输出文件定义
输入文件=查找路径文件
outfile=savepath文件[:-4]。文本
#新建一个txt文件,确保文件正常保存。
out=自我。Make_txt(输出文件)
#分析xml树,取出w_image和h_image
tree=ET.parse(input_file)
root=tree.getroot()
size=root.find(size )
w_image=float(size.find(width )。正文)
h _ image=float(size . find( height )。正文)
#继续提取有效信息来计算txt中的四个数据
for obj in root . ITER( object ):
#提取类型。不同的目标类型是不同的。这篇文章中只有一个类别-0
classname=obj.find(name )。文本
cls_id=classname
xmlbox=obj.find(bndbox )
x_min=float(xmlbox.find(xmin )。正文)
x_max=float(xmlbox.find(xmax )。正文)
y_min=float(xmlbox.find(ymin )。正文)
y_max=float(xmlbox.find(ymax )。正文)
#计算公式
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()
返回计数
if __name__==__main__:
数据=Voc_Yolo(查找路径)
数字=数据。工作(0)
打印(数字)
3、转换过程
已成功创建。
与真实数据相比,误差很小。
关于Python将xml格式转换为txt格式的示例代码的文章到此结束。关于Python的XML转txt的更多信息,请搜索热门IT软件开发工作室之前的文章或者继续浏览下面的相关文章。希望大家以后多多支持热门IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。