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

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

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

瀏覽:23日期: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久久,三上悠亚国产精品一区二区三区
久久亚洲国产精品一区二区| 国产精品女主播一区二区三区| 日韩精品免费一区二区在线观看| 老鸭窝亚洲一区二区三区| 欧美肉体xxxx裸体137大胆| 国产精品天天看天天狠| 日本精品久久| 欧美日一区二区三区在线观看国产免 | 鲁鲁在线中文| 国产精品1区在线| 日韩精品乱码av一区二区| 91精品美女| 欧美三级第一页| 欧美综合社区国产| 国产精品videossex| 国产探花在线精品一区二区| 亚洲精品在线a| 国产精品网址| 国产精品久久乐| 国产精品亚洲欧美日韩一区在线| 久久中文欧美| 欧美xxxx中国| 国产aⅴ精品一区二区四区| 激情久久99| 日本欧美国产| 欧美韩日一区| 99国产精品99久久久久久粉嫩| 欧美+亚洲+精品+三区| 日本а中文在线天堂| 亚州av乱码久久精品蜜桃| 欧美va天堂在线| 99精品视频精品精品视频| 中文不卡在线| 日韩精品欧美大片| 免费日韩精品中文字幕视频在线| 丝袜美腿亚洲一区| 日韩不卡一区二区三区| 国产高清亚洲| 日韩大片在线播放| 亚洲第一精品影视| 亚洲视频国产精品| 精品国产亚洲一区二区在线观看| 日本一二区不卡| 亚洲精品国产嫩草在线观看 | 欧美在线看片| 精品视频亚洲| 香蕉精品久久| 欧美亚洲综合视频| 久久精品资源| 久久久久黄色| 好看的av在线不卡观看| 亚洲tv在线| 国产一区二区精品福利地址| 欧美天堂视频| 国产免费成人| 激情久久一区二区| 9999国产精品| 国产日韩欧美在线播放不卡| 丝袜国产日韩另类美女| 欧美久久久网站| 日本蜜桃在线观看视频| 久久久久99| 亚洲精品成人| 日韩精品免费视频人成| 噜噜噜躁狠狠躁狠狠精品视频 | 免费日韩成人| 久久久久免费av| 亚洲精品高潮| 久久亚洲精品中文字幕蜜潮电影| 日本一区免费网站| 精品少妇一区| 亚洲www啪成人一区二区| 亚洲天堂成人| 麻豆精品在线观看| 亚洲成人日韩| 国产精品对白| 中文精品视频| 麻豆成人在线观看| 国产麻豆精品| 久久国产99| 动漫av一区| 中文字幕免费精品| xxxxx性欧美特大| 亚洲精品国模| 久久视频一区| 国产欧美日韩一级| 91精品蜜臀一区二区三区在线| 日韩精品一二三四| 亚洲黄色中文字幕| 欧美国产日韩电影| 亚洲免费影视| 亚洲成av人片一区二区密柚| 久久精品欧洲| 亚洲综合专区| 亚洲伦乱视频| 国产精品一区亚洲| 美女日韩在线中文字幕| 亚洲第一精品影视| 高清日韩中文字幕| 日韩极品在线观看| 一区二区三区午夜视频| 久久精品91| 日韩亚洲精品在线观看| 影音国产精品| 欧美激情国产在线| 亚洲精品中文字幕乱码| 国内精品伊人| 欧美日韩18| 欧美日本一区| 一区二区日韩免费看| 久久在线免费| 成人精品中文字幕| 国产一区二区三区网| 日本成人在线一区| 日本精品国产| 综合一区av| 香蕉精品视频在线观看| 亚洲精品永久免费视频| 日韩美女国产精品| 亚洲aa在线| 五月天久久久| av不卡在线看| 久久久成人网| 国产99在线| 欧洲精品一区二区三区| 激情综合婷婷| 开心激情综合| sm捆绑调教国产免费网站在线观看| 国产激情久久| 欧美精品二区| 欧美1区二区| 国产精品亚洲四区在线观看 | 欧美激情日韩| 久久免费视频66| 国产女人18毛片水真多18精品| 免费日本视频一区| 另类国产ts人妖高潮视频| 亚洲午夜精品久久久久久app| 国产精品99一区二区| 99tv成人| 在线日韩一区| 久久亚洲电影| 日韩中文字幕亚洲一区二区va在线| 蜜桃免费网站一区二区三区| 亚洲欧洲日韩精品在线| 亚欧洲精品视频在线观看| 亚洲毛片一区| 蜜桃久久久久久| 亚洲深夜福利在线观看| 国产精品黄网站| 精品视频一区二区三区四区五区 | 国产在线|日韩| 久久国产日韩欧美精品| 久久99久久人婷婷精品综合| 精品一区av| 色婷婷久久久| 快播电影网址老女人久久| 久久国产电影| 免费观看日韩电影| 日韩精品三级| 欧美激情五月| 蜜臀久久99精品久久一区二区| 午夜精品婷婷| 久久先锋影音| 欧美日韩伊人| 麻豆91在线播放| 一区二区视频欧美| 最新国产精品| 国产精品探花在线观看| 欧美羞羞视频| 婷婷综合网站| 亚洲综合三区| 久久伊人国产| 欧美日韩在线网站| 91精品国产经典在线观看 | 99热精品在线观看| 一区二区三区四区精品视频| 欧美xxxx性| 99久久精品费精品国产| 天堂俺去俺来也www久久婷婷| 国产精品网址| 日韩欧美一区二区三区免费观看| 亚洲午夜久久| 国产精品115| 久久久久美女| 婷婷精品在线| 激情不卡一区二区三区视频在线| 麻豆视频在线观看免费网站黄| 免费中文字幕日韩欧美| 国产精品nxnn| 欧美不卡高清| 欧美亚洲福利| 日本蜜桃在线观看视频| 午夜精品免费| 国产精品伦理久久久久久| 日韩亚洲国产欧美| 国产精东传媒成人av电影| 久久亚洲电影| 狠狠久久伊人中文字幕| 亚洲影视一区二区三区|