#coding:utf-8
from PIL import Image
import os
import glob
import xml.etree.ElementTree as ET
import xml.dom.minidom
import random
def changePicAndXmlName(oldImg, oldXml, newImg, newXml):
n = 1
if not os.path.exists(newImg):
os.mkdir(newImg)
if not os.path.exists(newXml):
os.mkdir(newXml)
xmlsList = os.listdir(oldXml)
random.shuffle(xmlsList)
for xmlfile in xmlsList:
xmlname = os.path.splitext(xmlfile)[0]
for pngfile in os.listdir(oldImg):
try:
pngname = os.path.splitext(pngfile)[0]
if pngname == xmlname:
if os.path.splitext(pngfile)[1] == '.png':
olddir = os.path.join(os.path.abspath(oldImg), pngname + ".png")
newdir = os.path.join(os.path.abspath(newImg), '%05d' % int(n)+".png")
elif os.path.splitext(pngfile)[1] == '.jpg':
olddir = os.path.join(os.path.abspath(oldImg), pngname + ".jpg")
newdir = os.path.join(os.path.abspath(newImg), '%05d' % int(n)+".jpg")
else:
olddir = os.path.join(os.path.abspath(oldImg), pngname + ".JPG")
newdir = os.path.join(os.path.abspath(newImg), '%05d' % int(n)+".JPG")
dom = xml.dom.minidom.parse(os.path.join(oldXml, xmlfile))
root = dom.documentElement
root.getElementsByTagName('filename')[0].firstChild.data = '%05d' % int(n) + os.path.splitext(pngfile)[1]
old_xmldir = os.path.join(oldXml, xmlfile)
new_xmldir = os.path.join(newXml, '%05d' % int(n)+'.xml')
with open(old_xmldir, 'w') as fh:
dom.writexml(fh)
os.rename(old_xmldir, new_xmldir)
os.rename(olddir, newdir)
n += 1
except Exception as e:
print(e)
continue
# os.rename(old_dir, new_dir)
print('total number is ', n)
def create_dir_not_exist(path):
if not os.path.exists(path):
os.mkdir(path)
if __name__ == "__main__":
allPath = '/home/hs/data/data_jiaxingyili/goods/smalldeal'
oldimgs = allPath + '/imgL/'
oldxmls = allPath + '/xmlL/'
newimgs = allPath + '/imgc/'
newxmls = allPath + '/xmlc/'
create_dir_not_exist(newimgs)
create_dir_not_exist(newxmls)
changePicAndXmlName(oldimgs, oldxmls, newimgs, newxmls)
pass
python批量修改图片name和annotation的name
最新推荐文章于 2024-04-12 10:40:46 发布
该代码实现将指定目录下的图片及其对应的XML注释文件按编号重命名,并随机打乱顺序,分别保存到新的目录中。通过创建目标目录、读取源目录中的XML文件列表,然后匹配对应的图片文件,更新XML文件中的文件名,最后将原文件重命名并移动到新目录。此功能适用于数据集预处理,确保训练集的多样性。
摘要由CSDN通过智能技术生成