主要目的为根据xml文件批量创建txt文件,并将xml文件中的信息提取、保存至相应的txt中。参考xml处理程序:
xml信息提取及格式转换
效果图:
# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET
import pickle
import os
from os import listdir, getcwd
from os.path import join
#数据集行为分类
classes = ["Smash", "Pry", "Kick"]
def main():
#需要提取的xml文件夹
gt_path = 'C:\\Users\\Zhang\\Desktop\\biaoji\\test\\'
#txt保存的文件夹
output_path = 'C:\\Users\\Zhang\\Desktop\\blxwtxt\\'
gts=os.listdir(gt_path)
for gt in gts:
tree = ET.parse(gt_path+gt)
root = tree.getroot()
#创建文件夹
items=gt.strip(".xml")
output=output_path + items + ".txt"
file=open(output,'w')
for obj in root.iter('object'):
difficult = obj.find('difficult').text
cls = obj.find('name').text
if cls not in classes or int(difficult) == 1:
continue
xmlbox = obj.find('bndbox')
#txt中顺序为xmin,ymin,xmax,ymax
b = (float(xmlbox.find('xmin').text), float(xmlbox.find('ymin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymax').text))
for a in b:
file.write(str(int(a)) + " ")
#将行为的分类加到最后
file.write(str(cls) + '\n')
file.close()
print(output)
if __name__ == '__main__':
main()