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

您的位置:首頁技術文章
文章詳情頁

python:批量統計xml中各類目標的數量案例

瀏覽:21日期:2022-08-03 09:03:29

之前寫了一個matlab的,越用越覺得麻煩,如果不同數據集要改類別數目,而且運行速度慢。所以重新寫了一個Python的,直接讀取xml文件夾路徑就可以,不用預先知道類別,直接能夠檢測出所有類別的目標名稱及其對應的數量。

分享出來給大家。

代碼如下:

# -*- coding:utf-8 -*-import osimport xml.etree.ElementTree as ETimport numpy as npnp.set_printoptions(suppress=True, threshold=np.nan)import matplotlibfrom PIL import Image def parse_obj(xml_path, filename): tree=ET.parse(xml_path+filename) objects=[] for obj in tree.findall(’object’): obj_struct={} obj_struct[’name’]=obj.find(’name’).text objects.append(obj_struct) return objects def read_image(image_path, filename): im=Image.open(image_path+filename) W=im.size[0] H=im.size[1] area=W*H im_info=[W,H,area] return im_info if __name__ == ’__main__’: xml_path=’C:/Users/nansbas/Desktop/hebin/03/’ filenamess=os.listdir(xml_path) filenames=[] for name in filenamess: name=name.replace(’.xml’,’’) filenames.append(name) recs={} obs_shape={} classnames=[] num_objs={} obj_avg={} for i,name in enumerate(filenames): recs[name]=parse_obj(xml_path, name+ ’.xml’ ) for name in filenames: for object in recs[name]: if object[’name’] not in num_objs.keys(): num_objs[object[’name’]]=1 else: num_objs[object[’name’]]+=1 if object[’name’] not in classnames: classnames.append(object[’name’]) for name in classnames: print(’{}:{}個’.format(name,num_objs[name])) print(’信息統計算完畢。’)

python:批量統計xml中各類目標的數量案例

補充知識:Python對目標檢測數據集xml文件操作(統計目標種類、數量、面積、比例等&修改目標名字)

1. 根據xml文件統計目標種類以及數量

# -*- coding:utf-8 -*-#根據xml文件統計目標種類以及數量import osimport xml.etree.ElementTree as ETimport numpy as npnp.set_printoptions(suppress=True, threshold=np.nan)import matplotlibfrom PIL import Image def parse_obj(xml_path, filename): tree=ET.parse(xml_path+filename) objects=[] for obj in tree.findall(’object’): obj_struct={} obj_struct[’name’]=obj.find(’name’).text objects.append(obj_struct) return objects def read_image(image_path, filename): im=Image.open(image_path+filename) W=im.size[0] H=im.size[1] area=W*H im_info=[W,H,area] return im_info if __name__ == ’__main__’: xml_path=’/home/dlut/網絡/make_database/數據集——合集/VOCdevkit/VOC2018/Annotations/’ filenamess=os.listdir(xml_path) filenames=[] for name in filenamess: name=name.replace(’.xml’,’’) filenames.append(name) recs={} obs_shape={} classnames=[] num_objs={} obj_avg={} for i,name in enumerate(filenames): recs[name]=parse_obj(xml_path, name+ ’.xml’ ) for name in filenames: for object in recs[name]: if object[’name’] not in num_objs.keys(): num_objs[object[’name’]]=1 else: num_objs[object[’name’]]+=1 if object[’name’] not in classnames: classnames.append(object[’name’]) for name in classnames: print(’{}:{}個’.format(name,num_objs[name])) print(’信息統計算完畢。’)

python:批量統計xml中各類目標的數量案例

2.根據xml文件統計目標的平均長度、寬度、面積以及每一個目標在原圖中的占比

# -*- coding:utf-8 -*-#統計# 計算每一個目標在原圖中的占比# 計算目標的平均長度、# 計算平均寬度,# 計算平均面積、# 計算目標平均占比import osimport xml.etree.ElementTree as ETimport numpy as np#np.set_printoptions(suppress=True, threshold=np.nan) #10,000,000np.set_printoptions(suppress=True, threshold=10000000) #10,000,000import matplotlibfrom PIL import Imagedef parse_obj(xml_path, filename): tree = ET.parse(xml_path + filename) objects = [] for obj in tree.findall(’object’): obj_struct = {} obj_struct[’name’] = obj.find(’name’).text bbox = obj.find(’bndbox’) obj_struct[’bbox’] = [int(bbox.find(’xmin’).text),int(bbox.find(’ymin’).text),int(bbox.find(’xmax’).text),int(bbox.find(’ymax’).text)] objects.append(obj_struct) return objectsdef read_image(image_path, filename): im = Image.open(image_path + filename) W = im.size[0] H = im.size[1] area = W * H im_info = [W, H, area] return im_infoif __name__ == ’__main__’: image_path = ’/home/dlut/網絡/make_database/數據集——合集/VOCdevkit/VOC2018/JPEGImages/’ xml_path = ’/home/dlut/網絡/make_database/數據集——合集/VOCdevkit/VOC2018/Annotations/’ filenamess = os.listdir(xml_path) filenames = [] for name in filenamess: name = name.replace(’.xml’, ’’) filenames.append(name) print(filenames) recs = {} ims_info = {} obs_shape = {} classnames = [] num_objs={} obj_avg = {} for i, name in enumerate(filenames): print(’正在處理 {}.xml ’.format(name)) recs[name] = parse_obj(xml_path, name + ’.xml’) print(’正在處理 {}.jpg ’.format(name)) ims_info[name] = read_image(image_path, name + ’.jpg’) print(’所有信息收集完畢。’) print(’正在處理信息......’) for name in filenames: im_w = ims_info[name][0] im_h = ims_info[name][1] im_area = ims_info[name][2] for object in recs[name]: if object[’name’] not in num_objs.keys(): num_objs[object[’name’]] = 1 else: num_objs[object[’name’]] += 1 #num_objs += 1 ob_w = object[’bbox’][2] - object[’bbox’][0] ob_h = object[’bbox’][3] - object[’bbox’][1] ob_area = ob_w * ob_h w_rate = ob_w / im_w h_rate = ob_h / im_h area_rate = ob_area / im_area if not object[’name’] in obs_shape.keys(): obs_shape[object[’name’]] = ([[ob_w, ob_h, ob_area, w_rate, h_rate, area_rate]]) else: obs_shape[object[’name’]].append([ob_w, ob_h, ob_area, w_rate, h_rate, area_rate]) if object[’name’] not in classnames: classnames.append(object[’name’]) # 求平均 for name in classnames: obj_avg[name] = (np.array(obs_shape[name]).sum(axis=0)) / num_objs[name] print(’{}的情況如下:*******n’.format(name)) print(’ 目標平均W={}’.format(obj_avg[name][0])) print(’ 目標平均H={}’.format(obj_avg[name][1])) print(’ 目標平均area={}’.format(obj_avg[name][2])) print(’ 目標平均與原圖的W比例={}’.format(obj_avg[name][3])) print(’ 目標平均與原圖的H比例={}’.format(obj_avg[name][4])) print(’ 目標平均原圖面積占比={}n’.format(obj_avg[name][5])) print(’信息統計計算完畢。’)

python:批量統計xml中各類目標的數量案例

3.修改xml文件中某個目標的名字為另一個名字

#修改xml文件中的目標的名字,import os, sysimport globfrom xml.etree import ElementTree as ET# 批量讀取Annotations下的xml文件# per=ET.parse(r’C:UsersrockhuangDesktopAnnotations000003.xml’)xml_dir = r’/home/dlut/網絡/make_database/數據集——合集/VOCdevkit/VOC2018/Annotations’xml_list = glob.glob(xml_dir + ’/*.xml’)for xml in xml_list: print(xml) per = ET.parse(xml) p = per.findall(’/object’) for oneper in p: # 找出person節點 child = oneper.getchildren()[0] # 找出person節點的子節點 if child.text == ’PinNormal’: #需要修改的名字 child.text = ’normal bolt’ #修改成什么名字 if child.text == ’PinDefect’: #需要修改的名字 child.text = ’defect bolt-1’ #修改成什么名字 per.write(xml) print(child.tag, ’:’, child.text)

python:批量統計xml中各類目標的數量案例

以上這篇python:批量統計xml中各類目標的數量案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩av在线播放中文字幕| а√天堂8资源中文在线| 日韩视频网站在线观看| 国产一区二区三区视频在线| 国产精品一区二区精品| 国产日韩欧美中文在线| 国产亚洲欧美日韩精品一区二区三区| 日本久久一区| 国产高清精品二区| 精品久久美女| 91精品蜜臀一区二区三区在线| 精品三级国产| 日韩伦理福利| 亚洲欧美日本国产专区一区| 最新国产精品视频| 日韩高清不卡一区二区| 国产精品毛片久久久| 国产一区二区三区亚洲| 韩国精品主播一区二区在线观看| 激情视频一区二区三区| 视频精品一区二区| 国产麻豆精品| 国产精品成久久久久| 99精品电影| 亚洲精品乱码| 鲁大师精品99久久久| 精品淫伦v久久水蜜桃| 久久精品亚洲人成影院 | 国产在线观看www| 偷拍精品精品一区二区三区| 国产综合欧美| 日本综合视频| 超级白嫩亚洲国产第一| 国产一区亚洲| 日韩国产在线观看| 成人在线超碰| 国产99亚洲| 日韩三级久久| 色一区二区三区四区| 亚洲国产日韩欧美在线| 青青草国产成人99久久| 日韩一区二区在线免费| 一区二区三区网站| 精品国产一区二区三区av片| 久久人人88| 日本午夜精品久久久| 女生影院久久| 亚州av日韩av| 日韩成人综合| 日韩久久一区| 999久久久免费精品国产| 日本不卡高清视频| 日韩黄色大片| 国产香蕉精品| 亚洲大全视频| 久久99精品久久久野外观看| 欧美精品一区二区三区精品| 国产亚洲精品美女久久 | 欧美日韩中文| 久久精选视频| 国产精品视频首页| 久久精品123| 天堂av一区| 五月天久久久| 国产成人久久精品一区二区三区| 蜜桃av一区二区在线观看| 欧美国产小视频| 日韩 欧美一区二区三区| 99精品在线观看| 国产精品一在线观看| 亚洲综合二区| 日韩精品91| 国产精品1luya在线播放| 欧美中文字幕| 日韩精品专区| 国产精品分类| 蜜臀精品久久久久久蜜臀 | 日韩1区在线| 欧美一区自拍| 亚洲欧美日韩精品一区二区 | 国精品一区二区| 精品亚洲精品| 欧美日韩一视频区二区| aⅴ色国产欧美| 日韩电影在线视频| 国产精品男女| 亚洲精品无播放器在线播放| 亚洲福利国产| 激情久久一区二区| 日本aⅴ精品一区二区三区| 欧美精品一二| 日韩欧美一区二区三区免费观看| 国产精品99精品一区二区三区∴| 一区二区日韩免费看| 久久精品播放| 日韩毛片视频| 国内揄拍国内精品久久| 国产精品一区二区精品| 视频一区日韩精品| 制服诱惑一区二区| 少妇久久久久| 成人影视亚洲图片在线| 国产精品22p| 天海翼亚洲一区二区三区| 国产精品三上| 日韩亚洲国产欧美| 国产一区观看| 在线日韩中文| 久久激情一区| 91精品婷婷色在线观看| 久久91导航| 日韩一区二区三区在线免费观看| av中文资源在线资源免费观看| 麻豆高清免费国产一区| 国产精品九九| 美女国产一区二区三区| 国产欧美二区| 老司机免费视频一区二区| 久久黄色影视| 国产精品porn| 欧美韩一区二区| 里番精品3d一二三区| 国产精品扒开腿做爽爽爽软件| 国产精品羞羞答答在线观看| 久久av资源| 精品国产精品久久一区免费式 | 国产毛片一区二区三区| 久久不见久久见中文字幕免费 | 久久精品亚洲人成影院| 视频一区中文| 婷婷中文字幕一区| 免费观看在线综合| 日韩 欧美一区二区三区| 欧美另类中文字幕| 美女视频黄久久| 黑人精品一区| 亚洲一级二级| 欧美专区一区二区三区| 亚久久调教视频| 国产乱人伦丫前精品视频 | 欧美日韩亚洲一区二区三区在线| 国产亚洲欧美日韩在线观看一区二区| 国产免费久久| 国产精品精品| 久久精品中文| 在线视频亚洲欧美中文| 婷婷视频一区二区三区| 国产精品久久久久久久久免费高清 | 国产精品115| 激情国产在线| 国产精品99免费看| 久久香蕉精品| 国产日韩欧美在线播放不卡| 成人一区而且| 好看的av在线不卡观看| 亚洲精品影院在线观看| 国产精品亚洲一区二区在线观看| 国产成人免费视频网站视频社区| 欧美影院三区| 色婷婷成人网| 91免费精品| 久久夜色精品| 国产精品极品| 精品日韩毛片| 国产美女久久| 久久要要av| 中文无码日韩欧| 麻豆极品一区二区三区| 久久伦理在线| 97久久中文字幕| 色婷婷综合网| 香蕉久久夜色精品国产| 国产亚洲一区| 99精品一区| 日韩一区二区三区免费视频 | 激情综合网站| 国产日产精品_国产精品毛片 | 视频一区中文字幕国产| 国产精品成人3p一区二区三区| 久久精品国产大片免费观看| 日韩精品一区二区三区中文在线| 国产在线观看www| 美美哒免费高清在线观看视频一区二区| 国产精品黄网站| 99久久久国产精品美女| 亚洲精品观看| 日韩久久精品| 91免费精品国偷自产在线在线| 91日韩免费| 亚洲欧洲国产精品一区| yellow在线观看网址| 亚洲精品免费观看| 国产色播av在线| 天堂精品久久久久| 日韩欧美一区二区三区在线观看| 日本国产亚洲| 亚洲女同中文字幕| 成人在线黄色| 日本欧美韩国一区三区| 国产综合亚洲精品一区二|