日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Python讀取VOC中的xml目標(biāo)框?qū)嵗?/h1>
瀏覽:30日期:2022-08-03 08:34:03

代碼:

#!/usr/bin/python# -*- coding: UTF-8 -*-# get annotation object bndbox locationimport osimport cv2try: 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標(biāo)注文件路徑 tree = ET.ElementTree(file=AnotPath) #打開文件,解析成一棵樹型結(jié)構(gòu) root = tree.getroot()#獲取樹型結(jié)構(gòu)的根 ObjectSet=root.findall(’object’)#找到文件中所有含有object關(guān)鍵字的地方,這些地方含有標(biāo)注目標(biāo) ObjBndBoxSet={} #以目標(biāo)類別為關(guān)鍵字,目標(biāo)框為值組成的字典結(jié)構(gòu) 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)#如果字典結(jié)構(gòu)中含有這個類別了,那么這個目標(biāo)框要追加到其值的末尾 else: ObjBndBoxSet[ObjName]=[BndBoxLoc]#如果字典結(jié)構(gòu)中沒有這個類別,那么這個目標(biāo)框就直接賦值給其值吧 return ObjBndBoxSet##get object annotation bndbox loc enddef 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)

輸出結(jié)果:

{’chair’: [[335, 263, 484, 373]], ’person’: [[327, 104, 476, 300], [232, 57, 357, 374], [3, 32, 199, 374], [58, 139, 296, 374]]}

圖示:

Python讀取VOC中的xml目標(biāo)框?qū)嵗? src=

補(bǔ)充知識:使用python將voc類型標(biāo)注xml文件對圖片進(jìn)行目標(biāo)還原,以及批量裁剪特定類

使用標(biāo)注工具如labelimg對圖片物體進(jìn)行voc類型標(biāo)注,會生成xml文件,如何判斷別人的數(shù)據(jù)集做的好不好,可以用以下代碼進(jìn)行目標(biāo)還原。

import xml.etree.cElementTree as ETimport cv2import osimport globdef GetAnnotBoxLoc(AnotPath): tree = ET.ElementTree(file=AnotPath) root = tree.getroot() ObjectSet=root.findall(’object’) ObjBndBoxSet={} for Object in ObjectSet: ObjName=Object.find(’name’).text BndBox=Object.find(’bndbox’) x1 = int(BndBox.find(’xmin’).text) y1 = int(BndBox.find(’ymin’).text) x2 = int(BndBox.find(’xmax’).text) y2 = int(BndBox.find(’ymax’).text) BndBoxLoc=[x1,y1,x2,y2] if ObjName in ObjBndBoxSet: ObjBndBoxSet[ObjName].append(BndBoxLoc) else: ObjBndBoxSet[ObjName]=[BndBoxLoc] return ObjBndBoxSetdef GetAnnotName(AnotPath): tree = ET.ElementTree(file=AnotPath) root = tree.getroot() path=root.find(’path’).text return pathdef Drawpic(xml_path,result_path): n = 0 xmls = glob.glob(os.path.join(xml_path, ’*.xml’)) for xml in xmls: n = n + 1 box=GetAnnotBoxLoc(xml) path=GetAnnotName(xml) img = cv2.imread(path) for classes in list(box.keys()): for boxes in box[classes]:if classes == 'bad1': cv2.rectangle(img,(int(boxes[0]),int(boxes[1])),(int(boxes[2]),int(boxes[3])),(255,0,0),3) #blueif classes == 'bad2': cv2.rectangle(img,(int(boxes[0]),int(boxes[1])),(int(boxes[2]),int(boxes[3])),(0,255,0),3) #greenif classes == 'bad3': cv2.rectangle(img,(int(boxes[0]),int(boxes[1])),(int(boxes[2]),int(boxes[3])),(0,0,255),3) #red cv2.imwrite(result_path+'/'+str(n)+'_result.jpg', img) print(path,'還原成功')Drawpic('/home/wxy/Dashboard/dataset/VOCdevkit/VOC2012/Annotations','/home/wxy/Dashboard/dataset/VOCdevkit/VOC2012/test')

使用labelimg對圖像進(jìn)行標(biāo)注,folder目錄需要修改一下

import xml.etree.ElementTree as ETimport osfor i in os.listdir(’/home/wxy/Dashboard/dataset/VOCdevkit/VOC2012/Annotations’): tree = ET.parse(’/home/wxy/Dashboard/dataset/VOCdevkit/VOC2012/Annotations’+’/’+i) root = tree.getroot() print(root.find(’folder’).text) root.find(’folder’).text = ’VOC2012’ print(root.find(’folder’).text) tree.write(’/home/wxy/Dashboard/dataset/VOCdevkit/VOC2012/Annotations’+’/’+i)

批量裁剪特定類,xml.dom.minidom好像比xml.etree.cElementTree好用啊。

#coding=utf-8import xml.dom.minidomimport cv2import osfor name in os.listdir('./Annotations/'): dom=xml.dom.minidom.parse('./Annotations/'+name) root=dom.documentElement object_name=root.getElementsByTagName(’name’) if(object_name[0].firstChild.data == 'normal'): print(name) xmin=root.getElementsByTagName(’xmin’) ymin=root.getElementsByTagName(’ymin’) xmax=root.getElementsByTagName(’xmax’) ymax=root.getElementsByTagName(’ymax’) x_min = int(xmin[0].firstChild.data) y_min = int(ymin[0].firstChild.data) x_max = int(xmax[0].firstChild.data) y_max = int(ymax[0].firstChild.data) img=cv2.imread('./JPEGImages/'+name[:-4]+'.jpg') cropped=img[y_min:y_max,x_min:x_max] cv2.imwrite('./cut_jpg/'+name[:-4]+'.jpg', cropped)

以上這篇Python讀取VOC中的xml目標(biāo)框?qū)嵗褪切【幏窒斫o大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:

日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
91成人精品观看| 欧美日本二区| 美女久久久久久| 国产精品欧美在线观看| 日韩国产在线不卡视频| 日韩高清国产一区在线| 国产日韩免费| 国产日韩精品视频一区二区三区| 国产调教一区二区三区| 欧美精品国产| 国产精品亚洲二区| 精品高清久久| 亚洲风情在线资源| 久久一级电影| 在线观看一区| 亚洲欧洲免费| 国产精品亚洲产品| 日韩精品一卡| 伊人精品一区| 亚洲三级网站| 麻豆久久久久久久| 久久青草久久| 亚州欧美在线| 麻豆91精品91久久久的内涵| 午夜av成人| 五月激激激综合网色播| 鲁大师精品99久久久| 99精品视频精品精品视频| 综合日韩在线| 国产一区二区三区久久久久久久久| 国产拍在线视频| 亚洲自拍另类| 电影91久久久| 亚洲网址在线观看| 国产中文字幕一区二区三区| 香蕉精品视频在线观看| 国产欧美午夜| 欧美手机在线| 国产精品一区二区三区四区在线观看 | 国产一区不卡| 国产亚洲在线观看| 精品欧美视频| 亚洲伊人影院| 精品丝袜久久| 美女黄网久久| 98精品久久久久久久| 综合一区二区三区| 国产精品毛片久久| 久久国产66| 久久精品一区二区国产| 国产主播一区| 欧美国产精品| 亚洲欧美日韩综合国产aⅴ| 欧美国产中文高清| 亚洲毛片网站| 欧美美女一区| 9999国产精品| 国产精品一区二区精品| 欧美福利一区| 美女久久99| 亚洲九九精品| 亚洲一级黄色| 精品丝袜久久| 91伊人久久| 国产亚洲在线观看| 久久精品成人| 精品国产美女a久久9999| 亚洲v天堂v手机在线| 午夜日韩在线| 日韩中文首页| 国产福利资源一区| 亚洲精品大全| 国产精品美女| 午夜精品成人av| 麻豆国产一区| 欧美一级全黄| 日本vs亚洲vs韩国一区三区二区| 欧美日韩国产一区二区三区不卡| 91欧美在线| 粉嫩av一区二区三区四区五区| 国产精品日本一区二区不卡视频| 玖玖玖国产精品| 狠狠爱www人成狠狠爱综合网| 色黄视频在线观看| 91免费精品| 日韩av二区| 国产成人精品一区二区三区视频| 国产精品网站在线看| 色综合视频一区二区三区日韩 | 亚洲网站视频| 免费高潮视频95在线观看网站| 欧美精品不卡| 国产精品午夜av| 国产亚洲观看| 日韩国产成人精品| 欧美视频久久| 国产精品男女| 国产精品xxxav免费视频| 国产精品综合| 久久成人高清| 国产精品久久久久久久久妇女| 国产一区调教| 成人午夜精品| 在线成人动漫av| 五月天激情综合网| 日韩精品一级二级| 亚洲精品免费观看| 国产欧美日韩在线观看视频| 国产精品分类| 久久久精品国产**网站| 91亚洲国产高清| 久久精品二区三区| 欧美午夜不卡| 亚洲伊人影院| 国产精品久久久一区二区| 麻豆成人av在线| 欧产日产国产精品视频| 午夜久久久久| 91大神在线观看线路一区| 国产精品色婷婷在线观看| 久久香蕉精品香蕉| 欧美精选视频一区二区| 亚洲免费观看| 日韩av资源网| 国产亚洲一区二区三区啪| 精品一区二区三区视频在线播放| 欧美少妇精品| 久久99伊人| 国产免费av国片精品草莓男男| 国产精品成人一区二区不卡| 尹人成人综合网| 国产一精品一av一免费爽爽| 岛国av免费在线观看| 影音先锋久久| 国产毛片精品| 欧洲在线一区| 喷白浆一区二区| 国产高清日韩| 国产一区二区三区自拍| 亚洲一区观看| 蜜桃久久久久| 99视频精品免费观看| 国产精品magnet| 欧美福利在线| 国产精品流白浆在线观看| 亚洲精品2区| 国产毛片一区二区三区| 999精品色在线播放| 欧美亚洲自偷自偷| 99久久久久国产精品| 青青草91视频| 欧美.日韩.国产.一区.二区| 久久国产精品色av免费看| 欧美a级片一区| 日韩高清国产一区在线| 激情偷拍久久| 久久亚洲精品中文字幕| 日本 国产 欧美色综合| 成人欧美一区二区三区的电影| 亚洲v天堂v手机在线| 欧美日韩在线观看视频小说| 国产激情综合| 午夜精品福利影院| 国产91精品对白在线播放| 国产麻豆一区二区三区| 国产亚洲精品v| 国产欧美一区二区三区精品酒店| 亚洲一区二区免费在线观看| 人人精品亚洲| 国产精品任我爽爆在线播放 | 成人片免费看| 欧美三级第一页| 99国内精品| 日本不卡免费高清视频在线| 欧美中文一区| 亚洲欧美日韩一区在线观看| 成人在线免费观看网站| 日韩精品视频网站| 日韩午夜黄色| 亚洲美女久久精品| 国产精品多人| 日韩三级精品| 午夜av一区| 久久中文精品| 日韩在线网址| 日韩天堂av| 伊人精品一区| 欧美freesex黑人又粗又大| 免费亚洲婷婷| 日本强好片久久久久久aaa| 黄色亚洲大片免费在线观看| 成人看片网站| 日韩国产一区二区| 久久精品国产一区二区| 欧美在线精品一区| 天堂va欧美ⅴa亚洲va一国产| 日韩精品一级中文字幕精品视频免费观看 | 九九九精品视频| 欧美一区免费| 青青草视频一区|