Python 生成VOC格式的标签实例
常用目标检测模型基本都是读取的PASCALVOC格式的标签,下面代码用于生成VOC格式的代码,根据需要修改即可:
fromlxmlimportetree,objectify defgen_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('TheVOC2007Database'), E.annotation('PASCALVOC2007'), 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对PASCALVOC标注数据进行统计
用于统计训练数据中的类别,以及所有目标的个数:
#coding:utf-8 importxml.etree.cElementTreeasET importos fromcollectionsimportCounter importshutil #Counter({'towCounter({'tower':3074,'windpower':2014,'thermalpower':689,'hydropower':261,'transformer':225}) #total_num:6263 defcount(pathdir,despath): category=[] path=pathdir+'/XML/' forindex,xmlinenumerate(os.listdir(path)): #print(str(index)+'xml:'+xml) root=ET.parse(os.path.join(path,xml)) objects=root.findall('object') #==================selectimageswhichhasaspecialobject============= forobjinobjects: obj_label=obj.find('name').text ifobj_label=='transformer': print(xml) imgfile=pathdir+'JPEG/'+xml.replace('xml','jpg') img_despath=despath+xml.replace('xml','jpg') #ifnotos.path.exists(img_despath): shutil.copyfile(imgfile,img_despath) #==================selectimageswhichhasaspecialobject============= category+=[ob.find('name').textforobinobjects] print(Counter(category)) total_num=sum([valueforkey,valueinCounter(category).items()]) print('total_num:',total_num) if__name__=='__main__': #pathdirs=list(set(os.listdir('./'))^set(['tools','count.py'])) #print(pathdirs) #forpathdirinpathdirs: pathdir='/summer/Desktop/power_traindata/' despath='/transformer/' count(pathdir,despath)
以上这篇Python生成VOC格式的标签实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。