在使用tensorflow
進(jìn)行數(shù)據(jù)訓(xùn)練時(shí),由于原圖片文件名較繁瑣显拜,且由于根據(jù)原圖片名生成的xml
標(biāo)簽文件中生成了包含filename
的標(biāo)簽屬性娇澎,不利于后期測(cè)試訓(xùn)練效果描融,故通過(guò)Python
代碼對(duì)圖片名和xml
文件信息進(jìn)行批量修改為由0開(kāi)始的順序遞增文件名铡溪,以配合后期的測(cè)試工作一睁,在此記錄下。首先佃却,這是圖片名稱(chēng)和xml
文件信息:
圖片文件名:
image.png
標(biāo)簽文件名:
image.png
xml信息:
image.png
Python代碼如下:
#coding:utf-8
from PIL import Image
import os.path
import glob
import xml.etree.ElementTree as ET
import xml.dom.minidom
i = 0
xmldir = "E:\\object-detection-Game-2018-5-31\\xmls"
imgsdir = "E:\\object-detection-Game-2018-5-31\\imgs"
outdir = "E:\\object-detection-Game-2018-5-31\\imgs"
for xmlfile in os.listdir(xmldir):
xmlname = os.path.splitext(xmlfile)[0]
for pngfile in os.listdir(imgsdir):
pngname = os.path.splitext(pngfile)[0]
if pngname == xmlname:
# 修改圖片文件名
# 圖片文件名修改前后的路徑
olddir = os.path.join(os.path.abspath(imgsdir), pngname + ".png")
newdir = os.path.join(os.path.abspath(imgsdir), str(i)+".png")
os.rename(olddir, newdir)
print(xmlfile, '----->', str(i) + '.png')
# 修改filename結(jié)點(diǎn)屬性
# 讀取xml文件
dom = xml.dom.minidom.parse(os.path.join(xmldir, xmlfile))
root = dom.documentElement
# 獲取標(biāo)簽對(duì)filename之間的值并賦予新值i
root.getElementsByTagName('filename')[0].firstChild.data = str(i) + '.png'
# 將修改后的xml文件保存
# xml文件修改前后的路徑
old_xmldir = os.path.join(xmldir, xmlfile)
new_xmldir = os.path.join(xmldir, str(i)+'.xml')
# 打開(kāi)并寫(xiě)入
with open(old_xmldir, 'w') as fh:
dom.writexml(fh)
os.rename(old_xmldir, new_xmldir)
i += 1
print('total number is ', i)
運(yùn)行結(jié)果如下:
image.png
修改后的文件信息:
image.png