亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

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

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

瀏覽:50日期: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 編程
主站蜘蛛池模板: 欧美另类视频在线观看 | 国产精品露脸脏话对白 | 欧美色成人tv在线播放 | 成年人黄页 | 正在播放国产一区 | 欧美一级特黄特色大片 | 黄色aaaa | 成人做爰视频www网站 | 中文字幕在线一区二区三区 | 草久久久 | 国产精品高清视亚洲精品 | 91精品一区国产高清在线 | 国产在线综合视频 | 男女性高爱潮免费网站 | 中文字幕在线观看91 | 国产一级一片免费播放i | 国产国产人免费视频成69堂 | 欧美日本视频一区 | a级网站在线观看 | 香蕉久久久久久狠狠色 | 免费成年网 | 国产欧美日韩免费一区二区 | 怡红院亚洲红怡院天堂麻豆 | 毛片免费的 | 亚洲精品色 | 亚洲精品一区二区中文 | aaa级大片 | 寡妇一级毛片 | 2022男人天堂 | 99热精品在线免费观看 | 特级a毛片| 美女被靠视频免费网站不需要会员 | 中文字幕一级毛片 | 黑色丝袜美美女被躁视频 | 一区二区三区在线免费视频 | 亚洲成av人片在线观看无码 | 久久精品系列 | 黄色作爱| 中文精品视频一区二区在线观看 | 国产一级在线观看 | 香蕉99国内自产自拍视频 |