【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文件(解析、更新、写入)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/255970.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C—的BNF语法

近期用到ABB机器人&#xff0c;RAPID使用BNF语法规则描述&#xff0c;所以不得不复习了一下BNF语法描述规则&#xff0c;通过C的BNF描述&#xff0c;唤醒我的记忆 %>_<% C—的BNF语法如下&#xff1a; 1. program → declaration-list 2. declaration-list → decla…

Warning: Attempt to present on whose view is not in模态跳转问题

错误分析&#xff1a; controller A present controller B ,前提是A的view要存在&#xff0c;如果不存在&#xff0c;就会报这个错。解决方法&#xff1a; 将原来的present语句由 viewDidLoad方法中移到 viewDidAppear中&#xff0c;问题就可以解决。但是这样的话&#xff0c;画…

Reflector7及破解

Reflector7开始收费&#xff0c;前面的版本都已经过期&#xff0c;在网上下载了Reflector7&#xff0c;并找到了破解软解&#xff0c;特在此分享。 下载地址&#xff1a; Reflector7.1.0.143.zip&Red.Gate_.NET_.Reflector.7.1.0.143.patch-SND.zip 本文转自xwdreamer博客园…

win7系统的右键菜单只显示一个白色框不显示菜单项 解决办法

如上图所示&#xff0c;桌面或其他大部分地方点击右键菜单&#xff0c;都只显示一个白色框&#xff0c;鼠标移上去才有菜单项看&#xff0c;并且效果很丑 解决办法&#xff1a; 计算机—右键—属性—高级—性能—设置—视觉效果—淡入淡出或滑动菜单到视图&#xff0c;将其前面…

【setup.py编译出错】——提示无法查找到powershell.exe

https://www.cnblogs.com/wind-chaser/p/11359521.html pytorch fasterrcnn训练自己数据集文章链接 在进行faster rcnn pytorch跑通的时候遇到的&#xff0c;我是直接在pycharm中的终端上进行运行的&#xff0c;但是一直会跳出powershell.exe无法查找的错误&#xff0c; pytho…

同工不同酬,年薪 50 万美金的工程师到底有什么神本事?

同工不同酬&#xff0c;年薪 50 万美金的工程师到底有什么神本事&#xff1f;投递人 itwriter 发布于 2014-05-10 23:09 评论(6) 有6066人阅读 原文链接 [收藏] 英文原文&#xff1a;What kind of jobs do the software engineers who earn $500K a year do? 他们究竟是作…

201671010117 2016-2017-2 《Java程序设计》Java第十七周学习心得

Java第十七周学习心得 这一周老师对线程的内容进行了详细讲解&#xff0c;包括线程创建的两种技术&#xff0c;和线程的优先级属性及调度方法&#xff0c;对于布置的实验作业中&#xff0c;实验九中存在一点问题&#xff0c;程序运行不出来&#xff0c;后来跟同学商量探讨没有…

ACM数论之旅4---扩展欧几里德算法(欧几里德(・∀・)?是谁?)

为什么老是碰上 扩展欧几里德算法 ( •̀∀•́ )最讨厌数论了 看来是时候学一学了 度娘百科说&#xff1a; 首先&#xff0c; axby gcd(a, b) 这个公式肯定有解 &#xff08;( •̀∀•́ )她说根据数论中的相关定理可以证明&#xff0c;反正我信了&#xff09; 所以 axby g…

艾里斑大小与像元尺寸的匹配问题

写给自己看的学习记录&#xff1a; 光具有波粒二象性&#xff0c;由此衍生出了几何光学与衍射光学。在光学设计软件中&#xff0c;最常用的判断标准是查看点列图的RMS半径以及MTF图的曲线&#xff0c;这两者分别代表了两种传播性质的评价方式。 在刚接触光学设计时&#xff0…

Android 保持Service不被Kill掉的方法--双Service守护 Android实现双进程守护

本文分为两个部分&#xff0c;第一部分为双Service守护&#xff0c;第二部分为双进程守护 第一部分&#xff1a; 一、Service简介&#xff1a;Java.lang.Object ↳Android.content.Context ↳android.content.ContextWrapper ↳android.app.Service Service是应用程序Applicati…

【mmdetection2.0错误】——ModuleNotFoundError: No module named ‘mmdet‘

一开始以为是安装包导入的相对路径的问题&#xff0c;结果鼓捣了一上午都没有用&#xff0c;最后才发现再进行mmdet2.0环境配置的时候忘记编译了 也就是如下语句&#xff1a; python setup.py develop

聊聊分布式事务

事务就是一个会话过程中&#xff0c;对上下文的影响是一致的&#xff0c;要么所有的更改都做了&#xff0c;要么所有的更变都撤销掉。就要么生&#xff0c;要么死。没有半死不死的中间不可预期状态。参考下薛定谔的猫。 事务是为了保障业务数据的完整性和准确性的。分布式事务&…

PLSQL DBMS_DDL.ANALYZE_OBJECT

http://space.itpub.net/11893231/viewspace-683241 本文转自健哥的数据花园博客园博客&#xff0c;原文链接&#xff1a;http://www.cnblogs.com/gaojian/archive/2012/11/30/2795775.html&#xff0c;如需转载请自行联系原作者

【深度学习mmdetection错误】——mmdetection 运行报错KeyError:‘ConvWS is already registered in conv layer‘

于是修改以下mmdetection的安装文件&#xff1a; site-packages/mmdet-2.1.0unknown-py3.7-linux-x86_64.egg/mmdet/ops/conv_ws.py" 把 CONV_LAYERS.register_module(ConvWS) 修改为&#xff1a; CONV_LAYERS.register_module(nameConvWS, forceTrue)

ABB RAPID 在 Notepad++ 中语法高亮的实现

ABB RAPID 在 Notepad 中语法高亮的实现 分类&#xff1a; Misc2014-04-08 15:43 145人阅读 评论(0) 收藏 举报notepadNotepad 内置了一个称为 UDL2.0 (User Defined Language) 的引擎&#xff0c;来实现用户自定义语法高亮&#xff0c;使用它&#xff0c;可以定制自己的代码语…

Redis服务器的启动过程分析

转载于&#xff1a;http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/127.html?1455808771 本文将通过分析代码来介绍Redis的启动过程&#xff0c;通过查看Redis 的启动脚本&#xff0c;得知Redis的启动时从Redis.c的main方法开始的。Redis启动可以分为以下几个步骤…

MyEclipse运行时自动保存

今天第一次用MyEclipse&#xff0c;我发现我的代码明明修改了&#xff0c;但运行结果发现总是修改前的代码结果。后来发现&#xff0c;是代码修改后必须保存&#xff0c;再点运行。这个功能明显不合适&#xff0c;所以需要更改MyEclipse的配置。红框是修改后的结果。 转载于:ht…

PLSQL中INDEX BY TABLE 的 prior 和 next 操作学习

开始 --INDEX BY Table SET SERVEROUTPUT ON;DECLARETYPE enm_tab_type IS TABLE OFemp.ename%TYPEINDEX BY BINARY_INTEGER;enm_table enm_tab_type; BEGINenm_table(1):1001;enm_table(2):1002;enm_table(3):1003;enm_table(4):1004;enm_table(6):1006;dbms_output.put_line(…

【深度学习torch——error】——“xxx.pt is a zip archive(did you mean to use torch.jit.load()?)

这个问题是在进行权重文件加载进行预测的时候发生的&#xff0c;原因其实就是torch版本不对 我是用的工作站训练使用的是torch1.7.0&#xff0c;然后用自己的电脑进行预测&#xff0c;就报错了&#xff0c;原因就是自己的电脑是torch1.2.0版本的 因为在1.6版本以上的模型改变…

ABB 机器人 IRBP系列转台的一段代码注释

PROC IndexToStn1() //检测变位机状态 并设置要运行到的角度位置 并对不同的GetNextPartAdv返回值情况 进行处理 VAR bool bActive;VAR jointtarget jtCurrent; //声明一个位置变量IF (NOT bInterchCalib1) CalibIntch1; ! reset inpo…