实现:更改原始图像名,并同步更改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)
Logo

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

更多推荐