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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。