成人视屏在线观看-国产99精品-国产精品1区2区-欧美一级在线观看-国产一区二区日韩-色九九九

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

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 編程
主站蜘蛛池模板: 一级女性黄 色生活片 | 成人毛片高清视频观看 | 国产欧美日韩综合二区三区 | 亚洲男人在线天堂 | 亚洲国产情侣一区二区三区 | 香蕉久久夜色精品国产2020 | 极品的亚洲 | 亚洲精品国产一区二区三区四区 | 欧美在线综合 | 国产性tv国产精品 | 日本欧美不卡一区二区三区在线 | 欧美在线一区二区三区精品 | 99re66热这里只有精品免费观看 | av在线手机播放 | 亚洲成年人网址 | 亚洲欧美专区精品久久 | 中国一级毛片在线观看 | 欧美一级毛片欧美大尺度一级毛片 | 中文字幕日韩精品在线 | 性盈盈影院影院 | 国产午夜永久福利视频在线观看 | 欧美成人a| 国产欧美日韩视频免费61794 | 国产成人一区二区三区在线视频 | 在线视频 自拍 | 久久久久久免费播放一级毛片 | 精品在线小视频 | 日韩精品一区二区三区免费观看 | 成人在线第一页 | 成人a一级毛片免费看 | 一及毛片 | 免费一级淫片aaa片毛片a级 | 国产成人午夜精品影院游乐网 | 毛片韩国 | 亚洲一区在线免费观看 | 国产在线91精品 | 国产91丝袜美腿在线观看 | 久久久国产99久久国产久 | 国产一级强片在线观看 | 国产啪精品视频网免费 | 精品久久香蕉国产线看观看亚洲 |