python代码xml转txt实例
为了训练深度学习模型,经常要整理大量的标注数据,需统一不同格式的标注数据,一般情况下习惯读取TXT格式的数据。但实际中经常遇到XML格式的标注数据,在此举例:1.读取XML标注数据;2.写入TXT文件。
XML标注数据如下
suE Drivingrecord_001 C:\Desktop\Drivingrecord_001.jpg Unknown 1920 1080 3 0
657 1274 671 1325 670 1326 656
在此,我们只需要图片名filename,和每个object的坐标(四个点的坐标)
Drivingrecord_001.jpg17070416772924273524371073372173375988176088272212746571274671132567013266561609658161167116596691657656
利用xml.dom.*模块,文件对象模块DOM在读取XML文件时,一次读取整个文件,将其所有数据保存在一个树结构中,此时,可利用DOM的各种函数来读取目标数据。在此,利用xml.dom.minidom解析XML文件。
并将目标数据写入TXT文档。
#-*-coding:utf-8-*-
"""
CreatedonFriMar215:36:442018
@author:gg
"""
importxml.dom.minidom
importos
save_dir='D:\plate_train'
ifnotos.path.exists(save_dir):
os.mkdir(save_dir)
f=open(os.path.join(save_dir,'landmark.txt'),'w')
DOMTree=xml.dom.minidom.parse('D:\plate_train\label\Drivingrecord_001.xml')
annotation=DOMTree.documentElement
filename=annotation.getElementsByTagName("filename")[0]
imgname=filename.childNodes[0].data+'.jpg'
print(imgname)
objects=annotation.getElementsByTagName("object")
loc=[imgname]#文档保存格式:文件名坐标
forobjectinobjects:
bbox=object.getElementsByTagName("bndbox")[0]
leftTopx=bbox.getElementsByTagName("leftTopx")[0]
lefttopx=leftTopx.childNodes[0].data
print(lefttopx)
leftTopy=bbox.getElementsByTagName("leftTopy")[0]
lefttopy=leftTopy.childNodes[0].data
print(lefttopy)
rightTopx=bbox.getElementsByTagName("rightTopx")[0]
righttopx=rightTopx.childNodes[0].data
print(righttopx)
rightTopy=bbox.getElementsByTagName("rightTopy")[0]
righttopy=rightTopy.childNodes[0].data
print(righttopy)
rightBottomx=bbox.getElementsByTagName("rightBottomx")[0]
rightbottomx=rightBottomx.childNodes[0].data
print(rightbottomx)
rightBottomy=bbox.getElementsByTagName("rightBottomy")[0]
rightbottomy=rightBottomy.childNodes[0].data
print(rightbottomy)
leftBottomx=bbox.getElementsByTagName("leftBottomx")[0]
leftbottomx=leftBottomx.childNodes[0].data
print(leftbottomx)
leftBottomy=bbox.getElementsByTagName("leftBottomy")[0]
leftbottomy=leftBottomy.childNodes[0].data
print(leftbottomy)
loc=loc+[lefttopx,lefttopy,righttopx,righttopy,rightbottomx,rightbottomy,leftbottomx,leftbottomy]
foriinrange(len(loc)):
f.write(str(loc[i])+'')
f.write('\t\n')
f.close()
以上这篇python代码xml转txt实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。