目标检测标签文件xml格式转化为txt格式

import os
from xml.dom import minidom


def xml2txt(xml_path, txt_save_path, labels_list):
    index_label = list(range(len(labels_list)))
    voc_names_dic = dict(zip(labels_list, index_label))
    dir_files = os.listdir(xml_path)
    for item in dir_files:
        doc = minidom.parse(os.path.join(xml_path, item))
        name = doc.getElementsByTagName("filename")[0].firstChild.data  # image_name
        size = doc.getElementsByTagName("size")[0]
        width = int(size.getElementsByTagName("width")[0].firstChild.data)  # width
        height = int(size.getElementsByTagName("height")[0].firstChild.data)  # height
        objects = doc.getElementsByTagName("object")
        label_txt = os.path.join(txt_save_path, name[:-4] + ".txt")
        with open(label_txt, 'w') as file:
            for obj in objects:
                cls = obj.getElementsByTagName("name")[0].firstChild.data  # class_name
                box = obj.getElementsByTagName("bndbox")[0]
                xmin = int(box.getElementsByTagName("xmin")[0].firstChild.data)  # x1
                ymin = int(box.getElementsByTagName("ymin")[0].firstChild.data)  # y1
                xmax = int(box.getElementsByTagName("xmax")[0].firstChild.data)  # x2
                ymax = int(box.getElementsByTagName("ymax")[0].firstChild.data)  # y2
                x = round((xmin + xmax) / width / 2, 4)
                y = round((ymin + ymax) / height / 2, 4)
                w = round((xmax - xmin) / width, 4)
                h = round((ymax - ymin) / height, 4)
                label = int(voc_names_dic[cls])
                file.write(str(label) + ' ' + str(x) + ' ' + str(y) + ' ' + str(w) + ' ' + str(h) + '\n')


if __name__ == '__main__':
    print("starting convert data ......")
    xml_files_path = 'G:\\other\\VOC\\VOCdevkit_test07\\VOC2007\\Annotations'
    txt_files_path = 'G:\\other\\VOC\\VOCdevkit_test07\\VOC2007\\Annotations_txt'
    voc_names = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable',
                 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']
    xml2txt(xml_files_path, txt_files_path, voc_names)

xml标签数据格式

txt标签数据格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值