xml样本标签转txt
我使用的数据标注工具生成的文档如下所示:
<?xml version='1.0' encoding='GB2312'?>
<info><src width="480" height="640" depth="3">00ff0abc4818a309b51180264b830211.jpg</src><object id="E68519DF-E8E1-4C55-9231-CB381DE1CC5A"><rect lefttopx="168" lefttopy="168" rightbottomx="313" rightbottomy="340"></rect><type>21</type><descriinfo></descriinfo><modifydate>2018-05-08 17:04:07</modifydate></object>
</info>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
所以我需要将这个文档中的检测框坐标点提取出来,并整理成如上所述的标准形式,形成一个 label.txt 文档
根据以上xml的形式,转换的脚本如下:
# -*- coding:utf-8 -*-import os
from lxml import etree##################### 以下部分用于读取xml文件,返回检测框左上角和右下角的坐标 ###################
def read_xml(in_path):tree = etree.parse(in_path)return treedef find_nodes(tree, path):return tree.findall(path)def get_obj(xml_path):tree = read_xml(xml_path)nodes = find_nodes(tree, "src")objects = []for node in nodes:pic_struct = {}pic_struct['width'] = str(node.get('width'))pic_struct['height'] = str(node.get('height'))pic_struct['depth'] = str(node.get('depth'))# objects.append(pic_struct)nodes = find_nodes(tree, "object")for i in range(len(nodes)):# obj_struct = {}# obj_struct['name'] = str(find_nodes(nodes[i] , 'type')[0].text)cl_box = find_nodes(nodes[i], 'rect')for rec in cl_box:objects = [int(rec.get('lefttopx')), int(rec.get('lefttopy')),int(rec.get('rightbottomx')), int(rec.get('rightbottomy'))]return objects################# 将xml的信息统一成标准形式 ################
def listFile(data_dir, suffix):fs = os.listdir(data_dir)for i in range(len(fs)-1, -1, -1):# 如果后缀不是.jpg就将该文件删除掉if not fs[i].endswith(suffix):del fs[i]return fsdef write_label(data_dir, xml_dir):images = listFile(data_dir, ".jpg")with open("label.txt", "w") as label:for i in range(len(images)):image_path = data_dir + "/" + images[i]xml_path = xml_dir + "/" + images[i][:-4] + ".txt"objects = get_obj(xml_path)line = image_path + " " + str(objects[0]) + " " + str(objects[1]) \+ " " + str(objects[2]) + " " + str(objects[3]) + "\n"label.write(line)################ 主函数 ###################
if __name__ == '__main__':data_dir = "E:/MTCNN/Train/samples"xml_dir = "E:/MTCNN/Train/samples/annotation"write_label(data_dir, xml_dir)
整理好的 label.txt 形式为:
E:/MTCNN/Train/samples/0019c3f356ada6bcda0b695020e295e6.jpg 102 87 311 417
E:/MTCNN/Train/samples/0043e38f303b247e50b9a07cb5887b39.jpg 156 75 335 295
E:/MTCNN/Train/samples/004e26290d2290ca87e02b737a740aee.jpg 105 122 291 381
E:/MTCNN/Train/samples/00ff0abc4818a309b51180264b830211.jpg 168 168 313 340
E:/MTCNN/Train/samples/015a7137173f29e2cd4663c7cbcad1cb.jpg 127 60 332 398
E:/MTCNN/Train/samples/0166ceba53a4bfc4360e1d12b33ecb61.jpg 149 82 353 378
E:/MTCNN/Train/samples/01e6deccb55b377985d2c4d72006ee34.jpg 185 100 289 249
E:/MTCNN/Train/samples/021e34448c0ed051db501156cf2b6552.jpg 204 91 359 289
......
xml样本标签转txt相关推荐
- 将IphotoDraw标注好的xml文件转成txt文件(三)
接上一篇来说,将真实的样本过一遍baseline模型后得到最初版的boundingbox信息的txt文件,又将这些txt文件转成xml文件进行纠正,纠正后使用IphotoDraw导出的还是xml文件, ...
- python批量实现labelImg标注的 xml格式数据转换成 txt格式保存
labelImg标注的 xml格式数据如下: 单个xml文件数据打开如下: python实现labelImg标注的 xml格式数据转换成 txt格式数据的代码xml2txt.py如下: # -*- c ...
- XML格式数据集转TXT(YOLO)
我从网上下载了一个数据集(underwater)它们提供了xml格式的数据,但是我想用yolov5进行训练,所以需要将xml格式转化为txt格式. 正常的xml格式的数据集可以参考 目标检测中将已有 ...
- web.xml 常用标签配置(转)
2019独角兽企业重金招聘Python工程师标准>>> 1.Web.xml作用: 每一个javaWeb工程都有一个web.xml配置文件,web.xml文件是用来初始化工程配置信息的 ...
- 使用.NET中的XML注释(一) -- XML注释标签讲解
使用.NET中的XML注释(一) -- XML注释标签讲解 作者:Xt Idt 来源:博客园 发布时间:2011-04-02 11:46 阅读:9 次 原文链接 [收藏] 一.摘要 . ...
- log4j2.xml 的标签 loggers 中 root 的属性 level 指的是什么
log4j2.xml 的标签 loggers 中 root 的属性 level 指的是什么 log4j2.xml 是 log4j2 中的其中一种配置文件.log4j2.xml 中往往有如下配置: ...
- 数据库,XML,MDB --- 我们来TXT...
数据库,XML,MDB --- 我们来TXT... 转贴请注明来自http://blog.csdn.net/a11s 作者:董含君 blog已经迁移到http://a11s.cnblogs.com ...
- Maven之pom.xml常用标签解析及镜像配置
前言 Maven仅仅是个打包工具而已,个人觉得没有太大必要花费在打包工具上,这里就列举一下个人觉得会常用标签的使用就好了,原理啥的基本就不太会去深度了解了,如果以后遇到需了解Maven工作原理的工作的 ...
- python图片保存为txt文件_python实现对文件中图片生成带标签的txt文件方法
在深度学习中经常需要生成带标签的图片名称列表,xxxlist.txt文件,下面写一个简单的python脚本生成该文件列表. import os def generate(dir,label): fil ...
- Mybatis - xml文件标签中写注释
Mybatis - xml文件标签中写注释 1.错误场景. ( /* */ 注释 ) 在IDEA中的直接使用快捷键注释 Ctrl + Shift + / 注释. SELECT t.name, t.ag ...
最新文章
- SQL Server 2005中的分区表
- NUMA导致的MySQL服务器SWAP问题分析
- 14.结构体struct.rs
- cocos2dx打飞机项目笔记六:GameScene类和碰撞检测 boundingbox
- 小白学HarmonyOS,HarmonyOS 2.0正式发布 分布式能力获得全面升级
- Python判断一个集合族是否为σ代数
- WinFom中经典小游戏(含源码)
- Docker入门之四搭建私有仓库
- 新手怎么入门电子电路设计?
- html5毕业设计程序,网页毕业设计制作流程
- 内存超频时序怎么调_超频讲解:内存时序设置一
- xp怎样修改计算机mac地址,WinXP系统MAC地址修改的方法
- Java成员变量和局部变量
- 锐角三角形的一些结论及证明
- 2003服务器u盘不显示不出来,U盘文件不显示三种解决方法
- inventor(2):设置单位,显示完整工具区/功能区,创建分割面
- 小猿学python_小猿圈详解小白如何学习Python网络爬虫
- 实验6-cp –r系统命令的实现--源路径(目录)中的所有文件和子目录,以及子目录中的所有内容,全部拷贝到目标路径(目录)中--操作系统实验
- Python-Turtle库-从入门到精通
- Java面向对象设计模式