【VOC格式xml文件解析】——Python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/4/26 12:49
# @Author : @linlianqin
# @Site :
# @File : test1.py
# @Software: PyCharm
# @description:
import xml.etree.ElementTree as ETdef xmli(xmlpath):xmlTree = ET.parse(xmlpath) # 解析xml文件root = xmlTree.getroot() # 获得xml根节点size = root.find('size') # 查找size结点# 主要这里一定是findall,查找所有的object结点,也就是标注框的信息,否则用find返回的是Nonetypeobjects = root.findall('object') # 查找所有的object结点for obj in objects:bbox = obj.find('bndbox')# 修改相应结点的值bbox.find('ymin').text = str(222)bbox.find('ymax').text = str(222)return xmlTree # 返回更新后的xml文件句柄xmlTree = xmli(r'test.xml')
xmlTree.write('_flip_updown.xml') # 存储新的xml文件
以下转自:python VOC格式的xml文件解析
python解析XML常见的有三种方法:
xml.dom.*模块,它是W3C DOM API的实现,若需要处理DOM API则该模块很适合;
xml.sax.*模块,它是SAX API的实现,这个模块牺牲了便捷性来换取速度和内存占用,SAX是一个基于事件的API,这就意味着它可以“在空中”处理庞大数量的的文档,不用完全加载进内存;
xml.etree.ElementTree模块(简称 ET),它提供了轻量级的Python式的API,相对于DOM来说ET 快了很多,而且有很多令人愉悦的API可以使用,相对于SAX来说ET的ET.iterparse也提供了 “在空中” 的处理方式,没有必要加载整个文档到内存,ET的性能的平均值和SAX差不多,但是API的效率更高一点而且使用起来很方便。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# get annotation object bndbox location
try:import xml.etree.cElementTree as ET #解析xml的c语言版的模块
except ImportError:import xml.etree.ElementTree as ET##get object annotation bndbox loc start
def GetAnnotBoxLoc(AnotPath):#AnotPath VOC标注文件路径tree = ET.ElementTree(file=AnotPath) #打开文件,解析成一棵树型结构root = tree.getroot()#获取树型结构的根ObjectSet=root.findall('object')#找到文件中所有含有object关键字的地方,这些地方含有标注目标ObjBndBoxSet={} #以目标类别为关键字,目标框为值组成的字典结构for Object in ObjectSet:ObjName=Object.find('name').textBndBox=Object.find('bndbox')x1 = int(BndBox.find('xmin').text)#-1 #-1是因为程序是按0作为起始位置的y1 = int(BndBox.find('ymin').text)#-1x2 = int(BndBox.find('xmax').text)#-1y2 = int(BndBox.find('ymax').text)#-1BndBoxLoc=[x1,y1,x2,y2]if ObjBndBoxSet.__contains__(ObjName):ObjBndBoxSet[ObjName].append(BndBoxLoc)#如果字典结构中含有这个类别了,那么这个目标框要追加到其值的末尾else:ObjBndBoxSet[ObjName]=[BndBoxLoc]#如果字典结构中没有这个类别,那么这个目标框就直接赋值给其值吧return ObjBndBoxSet
##get object annotation bndbox loc end
其他xml文件的操作——写入、更新、读取请参考:python解析xml文件(解析、更新、写入)
【VOC格式xml文件解析】——Python相关推荐
- 【Python】计算VOC格式XML文件中目标面积和长宽比并生成直方图
1.Introduction 最近目标检测的精度上不去,看看别人的文章,发现可以针对anchor进行参数优化,RPN网络生成的anchor数量与种类很大程度上影响着检测精度,anchor与检测目标越接 ...
- XML文件解析--Python
目录 一.对xml的解析及其函数 Element对象有以下常用属性: 二.xml文件 三.python解析 四.示例图 源码: 一.对xml的解析及其函数 官方手册 XML 指可扩展标记语言XML 被 ...
- Python3将xml文件解析为Python对象
一.说明 从最开始写javascript开始,我就很烦感使用getElementById()等函数来获取节点的方法,获取了一个节点要访问其子孙节点要么child半天要么就再来一个getElementB ...
- Android学习笔记之AndroidManifest.xml文件解析(摘自皮狼的博客)
Android学习笔记之AndroidManifest.xml文件解析 一.关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件.它 ...
- VOC格式xml标签与YOLO格式txt标签相互转换
转自:LabelImg标注的VOC格式xml标签与YOLO格式txt标签相互转换_wangmj_hdu的博客-CSDN博客 1.VOC标签格式说明 VOC数据格式,会直接把每张图片标注的标签信息保存到 ...
- XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML
XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...
- 将VOC格式标注文件转换为Yolo格式
这篇文章主要参考博客中的代码,对原博客VOC格式数据集转yolo格式代码进行一定修改.添加注释,此外还在后面添加了我自己写的一段关于对转换后的图片和标注文件进行整理的脚本代码. 关于数据集在Yolo格 ...
- XML - XML学习/XML文件解析器(C++)实现
XML - XML学习/XML文件解析器(C++)实现 XML概述 XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识.它也是元标记语言,用于定义其他与特定领域有关的, ...
- android基础知识13:AndroidManifest.xml文件解析【转载】
注:本文转载于:http://blog.csdn.NET/xianming01/article/details/7526987 AndroidManifest.xml文件解析. 1.重要性 Andro ...
最新文章
- 我们公司用了6年的通用的权限管理系统设计方案
- 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-目录
- data.frame 转化为数值型_DataFrame(3):DataFrame的创建方式
- 用nodejs xml2js读取xml文件
- java程序猿面试问缺点怎么回答_JAVA程序员面试32问,你能回答多少题
- 【ES9(2018)】for await...of
- mysql的update条件语句_MySQL UPDATE语句介绍
- 乐视盒子u4刷Android,乐视盒子u4安装优酷
- 深度学习面试题集锦【1】
- 商城项目 ------ 订单的生成功能(vue实现)
- 内核相关资源
开源/文档/社区/信息资源
1 http://www.kernel.org
Linux...
- QQ三国七旗阵等级怎么计算?(附Excel计算器,输入队员等级即可计算)
- 安装、选择-如何制作U盘系统盘以及U盘安装操作系统的方法 -by小雨
- sybase客户端SqlDbx中文乱码问题解决
- Cocos Creator 随笔(1)-- 世界坐标,相对坐标转换问题
- 知道创宇入选第九届CNCERT国家级网络安全应急服务支撑单位
- 通俗理解OvO与OvR
- 如何创建自己的支付宝收款二维码
- VSCode用Run code插件配置python环境(win10)
- 从事手机软件开发需要掌握什么知识