国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

python目標(biāo)檢測給圖畫框,bbox畫到圖上并保存案例

瀏覽:21日期:2022-08-02 18:44:37

我就廢話不多說了,還是直接上代碼吧!

import osimport xml.dom.minidomimport cv2 as cv ImgPath = ’C:/Users/49691/Desktop/gangjin/gangjin_test/JPEGImages/’AnnoPath = ’C:/Users/49691/Desktop/gangjin/gangjin_test/Annotations/’ #xml文件地址save_path = ’’def draw_anchor(ImgPath,AnnoPath,save_path): imagelist = os.listdir(ImgPath) for image in imagelist: image_pre, ext = os.path.splitext(image) imgfile = ImgPath + image xmlfile = AnnoPath + image_pre + ’.xml’ # print(image) # 打開xml文檔 DOMTree = xml.dom.minidom.parse(xmlfile) # 得到文檔元素對象 collection = DOMTree.documentElement # 讀取圖片 img = cv.imread(imgfile) filenamelist = collection.getElementsByTagName('filename') filename = filenamelist[0].childNodes[0].data print(filename) # 得到標(biāo)簽名為object的信息 objectlist = collection.getElementsByTagName('object') for objects in objectlist: # 每個object中得到子標(biāo)簽名為name的信息 namelist = objects.getElementsByTagName(’name’) # 通過此語句得到具體的某個name的值 objectname = namelist[0].childNodes[0].data bndbox = objects.getElementsByTagName(’bndbox’) # print(bndbox) for box in bndbox:x1_list = box.getElementsByTagName(’xmin’)x1 = int(x1_list[0].childNodes[0].data)y1_list = box.getElementsByTagName(’ymin’)y1 = int(y1_list[0].childNodes[0].data)x2_list = box.getElementsByTagName(’xmax’) #注意坐標(biāo),看是否需要轉(zhuǎn)換x2 = int(x2_list[0].childNodes[0].data)y2_list = box.getElementsByTagName(’ymax’)y2 = int(y2_list[0].childNodes[0].data)cv.rectangle(img, (x1, y1), (x2, y2), (255, 255, 255), thickness=2)cv.putText(img, objectname, (x1, y1), cv.FONT_HERSHEY_COMPLEX, 0.7, (0, 255, 0), thickness=2)# cv.imshow(’head’, img)cv.imwrite(save_path+’/’+filename, img) #save picture

補充知識:深度學(xué)習(xí)python之用Faster-rcnn 檢測結(jié)果(txt文件) 在原圖畫出box

使用Faster-rcnn 的test_net.py 檢測網(wǎng)絡(luò)的mAP等精度會生成一個檢測結(jié)果(txt文件),格式如下:

000004 0.972 302.8 94.5 512.0 150.0000004 0.950 348.1 166.1 512.0 242.9000004 0.875 1.0 25.7 292.6 126.3000004 0.730 1.0 138.5 488.3 230.0000004 0.699 1.0 120.9 145.5 139.9000004 0.592 54.4 227.4 431.9 343.4000004 0.588 1.0 159.8 18.8 231.6000004 0.126 1.0 247.1 342.3 270.0000004 0.120 1.0 225.4 185.7 309.3

每行分別為 名稱 檢測概率 xmin ymin xmax ymax

問題在于每一行只顯示一個box數(shù)據(jù),每幅圖像可能包括多個box,需要判斷提取的多行數(shù)據(jù)是不是屬于同一圖片

下面使用python提取這些數(shù)據(jù),在原圖上畫出box并且保存起來

import osimport os.pathimport numpy as npimport xml.etree.ElementTree as xmlETfrom PIL import Image, ImageDrawimport cPickle as pickle txt_name = ’comp4_8a226fd7-753d-40fc-8013-f68d2a465579_det_test_ship.txt’file_path_img = ’/home/JPEGImages’save_file_path = ’/home/detect_results’source_file = open(txt_name)img_names = []for line in source_file: staff = line.split() img_name = staff[0] img_names.append(img_name)name_dict = {}for i in img_names: if img_names.count(i)>0: name_dict[i] = img_names.count(i) source_file.close()source_file = open(txt_name)for idx in name_dict: img = Image.open(os.path.join(file_path_img, idx + ’.jpg’)) draw = ImageDraw.Draw(img) for i in xrange(name_dict[idx]): line = source_file.readline() staff = line.split() score = staff[1] box = staff[2:6] draw.rectangle([int(np.round(float(box[0]))), int(np.round(float(box[1]))), int(np.round(float(box[2]))), int(np.round(float(box[3])))], outline=(255, 0, 0)) img.save(os.path.join(save_file_path, idx + ’.jpg’)) source_file.close()

運行完即可在保存文件夾中得到效果圖。

以上這篇python目標(biāo)檢測給圖畫框,bbox畫到圖上并保存案例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
主站蜘蛛池模板: 91福利网| 色婷婷激婷婷深爱五月老司机 | 国产亚洲精品成人久久网站 | 波多野在线播放 | 亚洲性天堂 | 欧美精品一级 | 亚洲操图 | 九九视频在线看精品 | 中国大陆一级毛片 | 特级毛片全部免费播放器 | 美女视频黄色网址 | 黄色三级网| 日朝欧美亚洲精品 | 国产精品推荐 | xxx国产hd| 国产一区亚洲一区 | 亚洲欧美精品网站在线观看 | 国产成人系列 | 国产精品久久久久久久久免费观看 | 永久免费观看午夜视频在线 | 成人a网站 | 精品国产亚洲一区二区三区 | 国产九九视频在线观看 | 午夜影院美女 | 亚洲在线一区二区三区 | 欧美成人全部免费观看1314色 | 深夜爽爽爽福利动态图 | 日韩中文字幕在线观看视频 | 人与禽的免费一级毛片 | 亚洲美女黄视频 | 一级a做爰片欧欧美毛片4 | 国产成人亚洲毛片 | 亚洲综合久久久 | 国产精品免费大片一区二区 | 欧美日韩视频免费播放 | 一区二区三区日本视频 | gv手机在线观看 | 国产精品99久久久久久www | 国产精品亚洲精品日韩已方 | 久久精品在线观看 | 成人免费夜片在线观看 |