【数据集操作】更改原始图像名,并同步更改xml文件名称和内容filename、path,另存至指定文件夹
数据集操作
·
实现:更改原始图像名,并同步更改xml文件名称和内容filename、path,另存至指定文件夹
看代码注释更清楚哟~
代码中用到了shutil
库,没有的兄弟请自行在终端键入pip install shutil
安装一下:
import os
import shutil
import xml.etree.ElementTree as ET
def change_xml(xml_path, xml_new_path, image_savepath): # 转换标签函数
# 1.打开xml文档,并解析树
tree = ET.parse(xml_path) # 将xml解析为树
root = tree.getroot() # 获取根节点
# 2.修改filename和path
filename = root.find('filename')
path = root.find('path')
filename.text = image_savepath.split('\\')[-1]
path.text = image_savepath
# 3.调用树的方法write()保存更新XML文件(以UTF-8的格式保存)
tree.write(xml_new_path, 'UTF-8')
def change_imagename_xml(image_dir, xml_dir, image_savedir, xml_savedir, extra='img_'):
"""
实现将image_dir中的图像重命名并保存到新的文件夹,并且同步更改xml_dir中的xml文件中的filename、path为图像的新名字和新路径
:param image_dir: 存放原始图像文件夹
:param xml_dir: 存放原始xml文件夹
:param image_savedir: 存放新名字图像的文件
:param xml_savedir: 存放新的xml文件
:param extra: 新图像名称改为extra+序号,例如extra默认为'img_',则新名称为:img_1.jpg
"""
assert os.path.exists(image_dir), f'\"{image_dir}\" not exists. change over!'
assert os.path.exists(xml_dir), f'\"{xml_dir}\" not exists. change over!'
if not os.path.exists(image_savedir):
os.makedirs(image_savedir)
if not os.path.exists(xml_savedir):
os.makedirs(xml_savedir)
filelist = os.listdir(image_dir)
for i, file in enumerate(filelist):
filename, ext = os.path.splitext(file)
new_filename = extra + str(i)
# change image name and copy
image_savepath = os.path.join(image_savedir, new_filename + ext)
shutil.copy(os.path.join(image_dir, file), image_savepath)
# change xml's filename and path -> save in new dir
xml_path = os.path.join(xml_dir, filename + '.xml')
xml_new_path = os.path.join(xml_savedir, new_filename + '.xml')
change_xml(xml_path, xml_new_path, image_savepath)
if __name__ == '__main__':
image_dir = r'D:\SoftWareInstallMenu\JetBrains\PycharmProjects\Augment-lwd\caogao_2\images'
xml_dir = r'D:\SoftWareInstallMenu\JetBrains\PycharmProjects\Augment-lwd\caogao_2\xml'
image_savedir = r'D:\SoftWareInstallMenu\JetBrains\PycharmProjects\Augment-lwd\caogao_2\images_out'
xml_savedir = r'D:\SoftWareInstallMenu\JetBrains\PycharmProjects\Augment-lwd\caogao_2\xml_out'
change_imagename_xml(image_dir, xml_dir, image_savedir, xml_savedir)

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)