Python 生成VOC格式的标签实例
作者:疯狂的小猪oO
这篇文章主要介绍了Python 生成VOC格式的标签实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
常用目标检测模型基本都是读取的PASCAL VOC格式的标签,下面代码用于生成VOC格式的代码,根据需要修改即可:
from lxml import etree, objectify def gen_txt(filename, h, w, c): E = objectify.ElementMaker(annotate=False) anno_tree = E.annotation( E.folder('VOC_OPEN_IMAGE'), E.filename(filename), E.source( E.database('The VOC2007 Database'), E.annotation('PASCAL VOC2007'), E.image('flickr'), E.flickrid("341012865") ), E.size( E.width(w), E.height(h), E.depth(c) ), E.segmented(0), E.object( E.name('1'), E.pose('left'), E.truncated('1'), E.difficult('0'), E.bndbox( E.xmin('0'), E.ymin('0'), E.xmax('0'), E.ymax('0') ) ), ) etree.ElementTree(anno_tree).write('ann/'+filename[:-4]+".xml", pretty_print=True)
补充知识: python对PASCAL VOC标注数据进行统计
用于统计训练数据中的类别,以及所有目标的个数:
# coding:utf-8 import xml.etree.cElementTree as ET import os from collections import Counter import shutil # Counter({'towCounter({'tower': 3074, 'windpower': 2014, 'thermalpower': 689, 'hydropower': 261, 'transformer': 225}) # total_num: 6263 def count(pathdir,despath): category = [] path = pathdir + '/XML/' for index,xml in enumerate(os.listdir(path)): # print(str(index) + ' xml: '+ xml) root = ET.parse(os.path.join(path, xml)) objects = root.findall('object') # ==================select images which has a special object============= for obj in objects: obj_label = obj.find('name').text if obj_label == 'transformer': print(xml) imgfile = pathdir + 'JPEG/' + xml.replace('xml', 'jpg') img_despath = despath + xml.replace('xml', 'jpg') # if not os.path.exists(img_despath): shutil.copyfile(imgfile, img_despath) # ==================select images which has a special object============= category += [ob.find('name').text for ob in objects] print(Counter(category)) total_num = sum([value for key, value in Counter(category).items()]) print('total_num:',total_num) if __name__ == '__main__': # pathdirs = list(set(os.listdir('./')) ^ set(['tools','count.py'])) # print(pathdirs) # for pathdir in pathdirs: pathdir = '/summer/Desktop/power_traindata/' despath = '/transformer/' count(pathdir,despath)
以上这篇Python 生成VOC格式的标签实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。