Verwenden Sie Python, um die von LabelImg markierten XML-Dateien stapelweise zu ändern

Ändern Sie Tags in großen Mengen

Wenn Sie labelImg zum Beschriften von Daten verwenden, ändern Sie die Etikettennamen der beschrifteten Daten stapelweise über Python. Beispielsweise ändert dieses Programm den Zielnamen „crack“ in der generierten XML-Datei stapelweise in „scratch“. Das Beispielprogramm lautet wie folgt:

'''
通过解析xml文件,批量修改xml文件里的标签名称,比如把标签crack改成scratch
'''
import os.path
import glob
import xml.etree.ElementTree as ET

path = 'crop_images/0421label'  # 存储标签的路径,修改为自己的Annotations标签路径
for xml_file in glob.glob(path + '/*.xml'):
    # 返回解析树
    tree = ET.parse(xml_file)
    # 获取根节点
    root = tree.getroot()
    # 对所有目标进行解析
    for member in root.findall('object'):
        objectname = member.find('name').text
        if objectname == 'crack':  # 原来的标签名字
            print(objectname)
            member.find('name').text = str('scratch')  # 替换的标签名字
            tree.write(xml_file)

Ändern Sie den Inhalt von XML-Dateien stapelweise

# -*- coding:utf-8 -*-

# 将a替换成b

import os

xmldir = 'crop_images/0427label'
savedir = 'crop_images/0430_save'
xmllist = os.listdir(xmldir)
i = 100332
for xml in xmllist:
    if '.xml' in xml:
        fo = open(savedir + '/' + '{}'.format(xml), 'w', encoding='utf-8')
        print('{}'.format(xml))
        fi = open(xmldir + '/' + '{}'.format(xml), 'r', encoding='utf-8')
        content = fi.readlines()
        for line in content:
            line = line.replace('<filename>{}.jpg</filename>'.format(i), '<filename>{}.jpg</filename>'.format(i-1))
            line = line.replace(r'<path>D:\image_preprocessing\crop_images\0427origin_imgs\{}.jpg</path>'.format(i), r'<path>D:\image_preprocessing\crop_images\0427origin_imgs\{}.jpg</path>'.format(i-1))
            fo.write(line)
        i += 1
        fo.close()
        print('替换成功')

# 如通b为空字符串,就是删除

Referenz:
Python-Batch-Änderung, Löschung und Ersetzung des XML-Dateiinhalts (Labelimg-Annotation)
Python realisiert die Änderung des Etikettennamens der durch LabelImg markierten XML-Datei.
Python-Batch-Änderung, Löschung und Ersetzung des XML-Dateiinhalts (Labelimg-Annotation)

Guess you like

Origin blog.csdn.net/ThreeS_tones/article/details/130450485