使用python批量修改XML文件中圖像的depth值
最近剛剛接觸深度學(xué)習(xí),并嘗試學(xué)習(xí)制作數(shù)據(jù)集,制作過程中發(fā)現(xiàn)了一個問題,現(xiàn)在跟大家分享一下。問題是這樣的,在制作voc數(shù)據(jù)集時,我采集的是灰度圖像,并已經(jīng)用labelimg生成了每張圖像對應(yīng)的XML文件。訓(xùn)練時發(fā)現(xiàn)好多目標(biāo)檢測模型使用的訓(xùn)練集是彩色圖像,因此特征提取網(wǎng)絡(luò)的輸入是m×m×3的維度的圖像。所以我就想著把我采集的灰度圖像的深度也改成3吧。批量修改了圖像的深度后,發(fā)現(xiàn)XML中的depth也要由1改成3才行。如果重新對圖像標(biāo)注一遍生成XML文件的話太麻煩,所以就想用python批量處理一下。果然在網(wǎng)上找到了類似的代碼,簡單修改一下就可以實現(xiàn)我們想要的功能了。
全部代碼如下
#coding:utf-8
import os
import os.path
import xml.dom.minidom
path='E:/data/ann/'#這里修改為自己存放XML文件的路徑
files=os.listdir(path) #獲取路徑下的所有文件的名稱
s=[]
for xmlFile in files:
if not os.path.isdir(xmlFile): #判斷是否是文件夾,不是文件夾才打開
print(xmlFile)
#將獲取到的xml文件名送入到dom解析
dom=xml.dom.minidom.parse(os.path.join(path,xmlFile))
root=dom.documentElement
###獲取標(biāo)簽對depth之間的值
depth=root.getElementsByTagName('depth')
#修改相應(yīng)標(biāo)簽的值
for i in range(len(depth)):
print(depth[i].firstChild.data)
a = depth[i].firstChild.data
print(type(a))
depth[i].firstChild.data=3
print(depth[i].firstChild.data)
#保存修改到xml文件中
with open(os.path.join(path,xmlFile),'w') as fh:
dom.writexml(fh)
print('修改depth成功!')
上面的代碼的思路是,讀取XML文件,并修改depth節(jié)點的內(nèi)容修改為3,通過循環(huán)讀取XML文件,實現(xiàn)批量化修改XML文件中depth的值。
修改前后的結(jié)果
XML修改前depth的值:

XML修改后depth的值:

這樣,就可以使用自己制作的voc數(shù)據(jù)集進(jìn)行訓(xùn)練了。我選的這個方法可能比較傻
到此這篇關(guān)于使用python批量修改XML文件中圖像的depth值的文章就介紹到這了,更多相關(guān)python批量修改XML內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 使用SMOTE解決數(shù)據(jù)不平衡問題(最新推薦)
SMOTE是一種強大的過采樣技術(shù),可以有效地處理不平衡數(shù)據(jù)集,提升分類器的性能,通過imbalanced-learn庫中的SMOTE實現(xiàn),我們可以輕松地對少數(shù)類樣本進(jìn)行過采樣,平衡數(shù)據(jù)集,這篇文章主要介紹了Python 使用SMOTE解決數(shù)據(jù)不平衡問題,需要的朋友可以參考下2024-05-05
Python模塊結(jié)構(gòu)與布局操作方法實例分析
這篇文章主要介紹了Python模塊結(jié)構(gòu)與布局操作方法,結(jié)合實例形式分析了Python模塊與布局的相關(guān)概念、使用方法與相關(guān)注意事項,需要的朋友可以參考下2017-07-07

