【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.pswp.cn/news/255970.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255970.shtml
英文地址,請注明出處:http://en.pswp.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…