我使用的数据标注工具生成的文档如下所示:

<?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相关推荐

  1. 将IphotoDraw标注好的xml文件转成txt文件(三)

    接上一篇来说,将真实的样本过一遍baseline模型后得到最初版的boundingbox信息的txt文件,又将这些txt文件转成xml文件进行纠正,纠正后使用IphotoDraw导出的还是xml文件, ...

  2. python批量实现labelImg标注的 xml格式数据转换成 txt格式保存

    labelImg标注的 xml格式数据如下: 单个xml文件数据打开如下: python实现labelImg标注的 xml格式数据转换成 txt格式数据的代码xml2txt.py如下: # -*- c ...

  3. XML格式数据集转TXT(YOLO)

     我从网上下载了一个数据集(underwater)它们提供了xml格式的数据,但是我想用yolov5进行训练,所以需要将xml格式转化为txt格式. 正常的xml格式的数据集可以参考 目标检测中将已有 ...

  4. web.xml 常用标签配置(转)

    2019独角兽企业重金招聘Python工程师标准>>> 1.Web.xml作用: 每一个javaWeb工程都有一个web.xml配置文件,web.xml文件是用来初始化工程配置信息的 ...

  5. 使用.NET中的XML注释(一) -- XML注释标签讲解

    使用.NET中的XML注释(一) -- XML注释标签讲解 作者:Xt Idt  来源:博客园  发布时间:2011-04-02 11:46  阅读:9 次  原文链接   [收藏]   一.摘要 . ...

  6. log4j2.xml 的标签 loggers 中 root 的属性 level 指的是什么

    log4j2.xml 的标签 loggers 中 root 的属性 level 指的是什么   log4j2.xml 是 log4j2 中的其中一种配置文件.log4j2.xml 中往往有如下配置: ...

  7. 数据库,XML,MDB --- 我们来TXT...

    数据库,XML,MDB --- 我们来TXT... 转贴请注明来自http://blog.csdn.net/a11s  作者:董含君 blog已经迁移到http://a11s.cnblogs.com ...

  8. Maven之pom.xml常用标签解析及镜像配置

    前言 Maven仅仅是个打包工具而已,个人觉得没有太大必要花费在打包工具上,这里就列举一下个人觉得会常用标签的使用就好了,原理啥的基本就不太会去深度了解了,如果以后遇到需了解Maven工作原理的工作的 ...

  9. python图片保存为txt文件_python实现对文件中图片生成带标签的txt文件方法

    在深度学习中经常需要生成带标签的图片名称列表,xxxlist.txt文件,下面写一个简单的python脚本生成该文件列表. import os def generate(dir,label): fil ...

  10. Mybatis - xml文件标签中写注释

    Mybatis - xml文件标签中写注释 1.错误场景. ( /* */ 注释 ) 在IDEA中的直接使用快捷键注释 Ctrl + Shift + / 注释. SELECT t.name, t.ag ...

最新文章

  1. SQL Server 2005中的分区表
  2. NUMA导致的MySQL服务器SWAP问题分析
  3. 14.结构体struct.rs
  4. cocos2dx打飞机项目笔记六:GameScene类和碰撞检测 boundingbox
  5. 小白学HarmonyOS,HarmonyOS 2.0正式发布 分布式能力获得全面升级
  6. Python判断一个集合族是否为σ代数
  7. WinFom中经典小游戏(含源码)
  8. Docker入门之四搭建私有仓库
  9. 新手怎么入门电子电路设计?
  10. html5毕业设计程序,网页毕业设计制作流程
  11. 内存超频时序怎么调_超频讲解:内存时序设置一
  12. xp怎样修改计算机mac地址,WinXP系统MAC地址修改的方法
  13. Java成员变量和局部变量
  14. 锐角三角形的一些结论及证明
  15. 2003服务器u盘不显示不出来,U盘文件不显示三种解决方法
  16. inventor(2):设置单位,显示完整工具区/功能区,创建分割面
  17. 小猿学python_小猿圈详解小白如何学习Python网络爬虫
  18. 实验6-cp –r系统命令的实现--源路径(目录)中的所有文件和子目录,以及子目录中的所有内容,全部拷贝到目标路径(目录)中--操作系统实验
  19. Python-Turtle库-从入门到精通
  20. Java面向对象设计模式

热门文章

  1. 自动生成java代码_自动生成代码
  2. 新闻管理系统——项目介绍+前期部署
  3. FPGA信号处理系列文章——相关与卷积
  4. 《电机学和电机驱动入门》
  5. Ubuntu中tftp下载程序
  6. spring boot 访问zul页面语言设置
  7. winsock类型病毒后遗症处理
  8. 世界各国国家或地区的国际区号
  9. 学习unity的几个网站
  10. ASM 知识(转自三思笔记)