1. 程式人生 > 程式設計 >使用python批量修改XML檔案中影象的depth值

使用python批量修改XML檔案中影象的depth值

最近剛剛接觸深度學習,並嘗試學習製作資料集,製作過程中發現了一個問題,現在跟大家分享一下。問題是這樣的,在製作voc資料集時,我採集的是灰度影象,並已經用labelimg生成了每張影象對應的XML檔案。訓練時發現好多目標檢測模型使用的訓練集是彩色影象,因此特徵提取網路的輸入是m×m×3的維度的影象。所以我就想著把我採集的灰度影象的深度也改成3吧。批量修改了影象的深度後,發現XML中的depth也要由1改成3才行。如果重新對影象標註一遍生成XML檔案的話太麻煩,所以就想用python批量處理一下。果然在網上找到了類似的程式碼,簡單修改一下就可以實現我們想要的功能了。

全部程式碼如下

#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
		
		    ###獲取標籤對depth之間的值
		    depth=root.getElementsByTagName('depth')
		    
        #修改相應標籤的值
		    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節點的內容修改為3,通過迴圈讀取XML檔案,實現批量化修改XML檔案中depth的值。

修改前後的結果

XML修改前depth的值:

修改前depth的值為1

XML修改後depth的值:

depth成功修改成3

這樣,就可以使用自己製作的voc資料集進行訓練了。我選的這個方法可能比較傻

到此這篇關於使用python批量修改XML檔案中影象的depth值的文章就介紹到這了,更多相關python批量修改XML內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!