Python读取VOC中的xml目标框实例-创新互联
代码:
成都创新互联公司2013年至今,先为陇县等服务建站,陇县等地企业,进行企业商务咨询服务。为陇县企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。#!/usr/bin/python # -*- coding: UTF-8 -*- # get annotation object bndbox location import os import cv2 try: import xml.etree.cElementTree as ET #解析xml的c语言版的模块 except ImportError: import xml.etree.ElementTree as ET ##get object annotation bndbox loc start def GetAnnotBoxLoc(AnotPath):#AnotPath VOC标注文件路径 tree = ET.ElementTree(file=AnotPath) #打开文件,解析成一棵树型结构 root = tree.getroot()#获取树型结构的根 ObjectSet=root.findall('object')#找到文件中所有含有object关键字的地方,这些地方含有标注目标 ObjBndBoxSet={} #以目标类别为关键字,目标框为值组成的字典结构 for Object in ObjectSet: ObjName=Object.find('name').text BndBox=Object.find('bndbox') x1 = int(BndBox.find('xmin').text)#-1 #-1是因为程序是按0作为起始位置的 y1 = int(BndBox.find('ymin').text)#-1 x2 = int(BndBox.find('xmax').text)#-1 y2 = int(BndBox.find('ymax').text)#-1 BndBoxLoc=[x1,y1,x2,y2] if ObjName in ObjBndBoxSet: ObjBndBoxSet[ObjName].append(BndBoxLoc)#如果字典结构中含有这个类别了,那么这个目标框要追加到其值的末尾 else: ObjBndBoxSet[ObjName]=[BndBoxLoc]#如果字典结构中没有这个类别,那么这个目标框就直接赋值给其值吧 return ObjBndBoxSet ##get object annotation bndbox loc end def display(objBox,pic): img = cv2.imread(pic) for key in objBox.keys(): for i in range(len(objBox[key])): cv2.rectangle(img, (objBox[key][i][0],objBox[key][i][1]), (objBox[key][i][2], objBox[key][i][3]), (0, 0, 255), 2) cv2.putText(img, key, (objBox[key][i][0],objBox[key][i][1]), cv2.FONT_HERSHEY_COMPLEX, 1, (255,0,0), 1) cv2.imshow('img',img) cv2.imwrite('display.jpg',img) cv2.waitKey(0) if __name__== '__main__': pic = r"./VOCdevkit/VOC2007/JPEGImages/000282.jpg" ObjBndBoxSet=GetAnnotBoxLoc(r"./VOCdevkit/VOC2007/Annotations/000282.xml") print(ObjBndBoxSet) display(ObjBndBoxSet,pic)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
分享名称:Python读取VOC中的xml目标框实例-创新互联
转载注明:http://myzitong.com/article/hiced.html