Python-目标检测-将xml文件转换成.txt文件
代码说明:labels文件夹是工程下的一个文件夹,里面存放的是一些xml文件。
然后我们将这些xml文件中的内容取出来,放在路径path1的文件名下。这样也就完成了xml文件到txt文件的转化。
该代码用到了两个包,pathlib以及xml.etree.cElementTree。文档的后面会对这两个包的一些基本使用做一些说明。
实现效果:
首先看一下xml文件:
'''
<annotation>
<folder>VOC2012</folder>
<filename>2007_000027.jpg</filename>
<source>
<database>The VOC2007 Database</database>
<annotation>PASCAL VOC2007</annotation>
<image>flickr</image>
</source>
<size>
<width>486</width>
<height>500</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>person</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>174</xmin>
<ymin>101</ymin>
<xmax>349</xmax>
<ymax>351</ymax>
</bndbox>
<part>
<name>head</name>
<bndbox>
<xmin>169</xmin>
<ymin>104</ymin>
<xmax>209</xmax>
<ymax>146</ymax>
</bndbox>
</part>
<part>
<name>hand</name>
<bndbox>
<xmin>278</xmin>
<ymin>210</ymin>
<xmax>297</xmax>
<ymax>233</ymax>
</bndbox>
</part>
<part>
<name>foot</name>
<bndbox>
<xmin>273</xmin>
<ymin>333</ymin>
<xmax>297</xmax>
<ymax>354</ymax>
</bndbox>
</part>
<part>
<name>foot</name>
<bndbox>
<xmin>319</xmin>
<ymin>307</ymin>
<xmax>340</xmax>
<ymax>326</ymax>
</bndbox>
</part>
</object>
转换后的txt:
'''
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000027.jpg 174,101,349,351,1
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000032.jpg 104,78,375,183,0 133,88,197,123,0 195,180,213,229,1 26,189,44,238,1
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000033.jpg 9,107,499,263,0 421,200,482,226,0 325,188,411,223,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000039.jpg 156,89,344,279,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000042.jpg 263,32,500,295,0 1,36,235,299,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000061.jpg 274,11,437,279,0 184,214,281,252,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000063.jpg 123,115,379,275,0 75,1,428,375,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000068.jpg 27,45,266,375,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000121.jpg 251,28,475,267,0 22,28,251,273,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000123.jpg 1,26,358,340,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000129.jpg 70,202,255,500,0 251,242,334,500,0 1,144,67,436,0 1,1,66,363,1 74,1,272,462,1 252,19,334,487,1
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000170.jpg 87,100,109,165,0 41,114,73,181,0 324,148,352,206,0 426,157,443,195,0 3,91,43,206,1 4,28,461,372,1
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000175.jpg 25,34,419,271,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000187.jpg 1,95,240,336,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000241.jpg 356,183,500,280,0 60,109,142,213,0 246,134,348,217,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000243.jpg 181,127,274,193,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000250.jpg 1,170,474,375,0 97,124,150,297,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000256.jpg 8,96,491,232,0
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000272.jpg 25,71,304,500,1
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000323.jpg 277,3,500,375,1 12,3,305,375,1
F:\Object detection\YunYang1994-tensorflow-yolov3-master\2007_000332.jpg 54,50,285,262,0
代码:
'''
from pathlib import Path
import os
try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
import sys
path = Path('F:/Object detection/YunYang1994-tensorflow-yolov3-master/labels')
file_list=[]
for files in path.rglob('*.xml'):
file_list.append(files)#存进file_list
for file in file_list:#循环文件
tree = ET.parse(file) #打开xml文档
root = tree.getroot() #获得root节点
print("*"*10)
filename = root.find('filename').text
filename = filename[:-4]
path1 = "voc3.txt"
with open(path1, "a") as f: # "a"用于追加内容
f.write(os.path.abspath(filename + '.jpg'))#写入路径
for object in root.findall('object'):#找到root节点下的所有object节点,写入坐标信息
name = object.find('name').text #子节点下节点name的值
bndbox = object.find('bndbox') #子节点下属性bndbox的值
#坐标值
xmin = bndbox.find('xmin').text
ymin = bndbox.find('ymin').text
xmax = bndbox.find('xmax').text
ymax = bndbox.find('ymax').text
if name==("person"):#
class_id=1
else:
class_id=0
with open(path1,"a") as f:#"a"用于追加内容
f.write(' '+str(xmin)+','+str(ymin)+','+str(xmax)+','+str(ymax)+','+str(class_id))
with open(path1, "a") as f:
f.write('\n')
f.close()
Python-目标检测-将xml文件转换成.txt文件的更多相关文章
- 自制 Python小工具 将markdown文件转换成Html文件
今天看到了一个Python库,名为markdown.瞬间就给了我一个灵感,那就是制作一个将markdown文件转换成html文件的小工具. 我的实验环境 操作系统: Windows 7 64位 旗舰版 ...
- <p><span style="font-size:14px">近期须要批量将PNM格式的文件转换成GIF文件。我尝试了例如以下的图像转换工具:</span></p>
近期须要批量将PNM格式的文件转换成GIF文件.我尝试了例如以下的图像转换工具: ImageBatch:全然免费,但只支持PNG JPEG BMP GIF四种格式 OfficeConverter:在线 ...
- Protocol Buffer使用转换工具将proto文件转换成Java文件流程及使用
Client与Server的网络通信协议传输使用google protobuf,服务器端使用的是Java 一. Protocol Buffersprotobuf全称Google Protocol Bu ...
- [转载]webarchive文件转换成htm文件
原文地址:webarchive文件转换成htm文件作者:xhbaxf Mac OS X系统带有文件转换功能,可以把webarchive文件变成html文件.方法是: Step 1: 建立一个文件夹 ...
- 把TXT GB2312文件转换成TXT UTF8文件
/// <summary> /// 把TXT GB2312文件转换成TXT UTF8文件 /// </summary> /// < ...
- linux下的什么工具能将DVI文件转换成PostScript文件?
答: dvips,此工具能将由Latex或Tex生成的DVI文件转换成PostScript文件,官网在此
- xls/csv文件转换成dbf文件
转至:https://blog.csdn.net/linhai1028/article/details/80211252 编写的一个小脚本,主要是利用python中的pandas,xlrd,dbfpy ...
- 15个最好的PDF转word的在线转换器,将PDF文件转换成doc文件
PDF是一种文件格式,包含文本,图像,数据等,这是独立于操作系统的文件类型.它是一个开放的标准,压缩,另一方面DOC文件和矢量图形是由微软文字处理文件.该文件格式将纯文本格式转换为格式化文档.它支持几 ...
- 【转】java将excel文件转换成txt格式文件
在实际应用中,我们难免会遇到解析excel文件入库事情,有时候为了方便,需要将excel文件转成txt格式文件.下面代码里面提供对xls.xlsx两种格式的excel文件解析,并写入到一个新的txt文 ...
- chm文件转换成html文件,解决chm文件无法使用浏览器打开的问题
每天学习一点点 编程PDF电子书免费下载: http://www.shitanlife.com/code CHM是英语“Compiled Help Manual”的简写,即“已编译的帮助文件”.CHM ...
随机推荐
- Asp.net Core 经过nginx代理后获取不到真实ip和scheme的问题
背景 我最近在一个Asp.net core Web 程序在经过nginx代理后 ,总是获取不到用户真实i和scheme(HttpContext.Request.Scheme),挠头: 我们一般从请求头 ...
- Android无障碍自动化结合opencv实现支付宝能量自动收集
Android无障碍服务可以操作元素,手势模拟,实现基本的控制.opencv可以进行图像识别.两者结合在一起即可实现支付宝能量自动收集.opencv用于识别能量,无障碍服务用于模拟手势,即点击能量. ...
- BST-splay板子 - 维护一个分裂和合并的序列
splay 均摊复杂度 \(O(\log n)\) 证明: https://www.cnblogs.com/Mr-Spade/p/9715203.html 我这个 splay 有两个哨兵节点,分别是1 ...
- 开发板测试手册——USB 4G 模块、GPS 定位功能操作步骤详解(3)
目录 4 USB 4G 模块测试 41 4.1 网络功能测试 42 4.2 短信功能测试 43 4.3 GPS 定位功能测试 44 4.4 通话功能测试 45 4.5 测试程序编译 46 5 USB ...
- 如何让其他模型也能在SemanticKernel中调用本地函数
在SemanticKernel的入门例子中: // Import packages using Microsoft.SemanticKernel; using Microsoft.SemanticKe ...
- Java 集合框架迭代器(Iterator)
什么是迭代器 使用循环遍历集合 普通for循环 for(int i=0;i<10;i++){} 增强for循环 for(String str:list){} 什么是迭代器Iterator Ite ...
- AI驱动音乐创新,网易数帆X云音乐刷新MIREX世界纪录 网易数帆 网易数帆
在近期揭榜的2021国际音频检索评测大赛(MIREX)上,网易数帆易智语音团队携手网易云音乐音视频实验室,凭借生产级AI技术创新能力,在歌词识别和歌单识别两个赛道大幅打破世界纪录夺得冠军. MIREX ...
- 操作系统|SPOOLing(假脱机)技术
什么是假脱机技术,它可以解决什么问题? 什么是脱机技术 要回答什么是假脱机技术,首先我们需要知道什么是脱机技术.<计算机操作系统(第四版)>写道: 为了解决人机矛盾及CPU和I/O设备之间 ...
- 最强AI语音克隆和文本配音工具!与真人无异,CosyVoice下载介绍
CosyVoice是一个大规模预训练语言模型,深度融合文本理解和语音生成的一项新型语音合成技术,能够精准解析并诠释各类文本内容,将其转化为宛如真人般的自然语音 CosyVoice采用了总共超15万小时 ...
- Known框架实战演练——进销存基础数据
本文介绍如何实现进销存管理系统的基础数据模块,基础数据模块包括商品信息.供应商管理和客户管理3个菜单页面.供应商和客户字段相同,因此可共用一个页面组件类. 项目代码:JxcLite 开源地址: htt ...