python3 txt文件转xml(VOC)格式

一曲冷凌霜 提交于 2019-12-09 14:56:22
from lxml.etree import Element, SubElement, tostring
from xml.dom.minidom import parseString
import os

def make_xml(f,save_xml_path):
    # 第一层循环遍历所有的照片
    for line in f:
        lines = str(line).split(' ')
        box_num = len(lines)-2
        pic_name = str(lines[0])

        node_root = Element('annotation')
        node_filename = SubElement(node_root, 'filename')
        # 图片名字
        node_filename.text = pic_name

        # 第二层循环遍历有多少个框
        for i in range(box_num):
            bbox = str(lines[i+2]).split(',')
            cls_name = bbox[-2]

            node_object = SubElement(node_root, 'object')
            node_name = SubElement(node_object, 'name')
            # 类别名字
            node_name.text = class_name(cls_name)

            node_bndbox = SubElement(node_object, 'bndbox')
            node_xmin = SubElement(node_bndbox, 'xmin')
            node_xmin.text = str(int(bbox[0]))
            node_ymin = SubElement(node_bndbox, 'ymin')
            node_ymin.text = str(int(bbox[1]))
            node_xmax = SubElement(node_bndbox, 'xmax')
            node_xmax.text = str(int(bbox[2]))
            node_ymax = SubElement(node_bndbox, 'ymax')
            node_ymax.text = str(int(bbox[3]))

        xml = tostring(node_root, pretty_print = True)
        dom = parseString(xml)
        #print xml 打印查看结果
        xml_name = pic_name.replace(".jpg","")
        xml_name = os.path.join(save_xml_path, xml_name + '.xml')
        with open(xml_name, 'wb') as f:
            f.write(dom.toprettyxml(indent='\t', encoding='utf-8'))

txt_path = '/home/yxq/桌面/xxx/new_train.txt'
save_xml_path = '/home/yxq/桌面/xxx/Annotations'
f = open(txt_path,'r')
f = f.readlines()
make_xml(f,save_xml_path)

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!