色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

python目標檢測給圖畫框,bbox畫到圖上并保存案例

瀏覽:25日期: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) # 得到標簽名為object的信息 objectlist = collection.getElementsByTagName('object') for objects in objectlist: # 每個object中得到子標簽名為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’) #注意坐標,看是否需要轉換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

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

使用Faster-rcnn 的test_net.py 檢測網絡的mAP等精度會生成一個檢測結果(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數據,每幅圖像可能包括多個box,需要判斷提取的多行數據是不是屬于同一圖片

下面使用python提取這些數據,在原圖上畫出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目標檢測給圖畫框,bbox畫到圖上并保存案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Python 編程
主站蜘蛛池模板: 国产成人不卡亚洲精品91 | 欧美国一级毛片片aa | 久久久www免费人成看片 | 最新国产区 | 国产精品v在线播放观看 | 91欧洲在线视精品在亚洲 | 欧美在线一区视频 | 亚洲精品国产一区二区三区四区 | 韩国一级毛片视频 | 国产91会所洗浴女技师按摩 | 美女黄频免费看 | 欧美一级特黄aaaaaa在线看片 | 欧美日韩在线视频 | 精品一区二区三区在线视频 | 国产成人自拍在线 | 欧美日韩国产亚洲综合不卡 | 另类专区另类专区亚洲 | 一区二区三区不卡在线 | 毛片免费视频 | 日韩99精品 | 午夜精品尤物福利视频在线 | 福利一二三区 | 国内精品一区二区在线观看 | 国产二区三区 | 91久久亚洲国产成人精品性色 | 亚洲成人免费在线观看 | 在线看片 在线播放 | 97在线观看视频免费 | 久久精品视频观看 | www国产91| 欧美美女色| 久操免费在线视频 | 久久91这里精品国产2020 | 日韩一级一片 | 成年免费观看 | 欧洲色老头| 国产成人啪精品视频免费软件 | 美女视频免费看视频网站 | 无毛片| 女人张开腿给男人捅 | 久久99精品久久久久久国产越南 |