欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2020年03月10日 10:56:35   作者:別說(shuō)話寫(xiě)代碼  
這篇文章主要介紹了python目標(biāo)檢測(cè)給圖畫(huà)框,bbox畫(huà)到圖上并保存案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

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

import os
import xml.dom.minidom
import 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)
    # 打開(kāi)xml文檔
    DOMTree = xml.dom.minidom.parse(xmlfile)
    # 得到文檔元素對(duì)象
    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:
      # 每個(gè)object中得到子標(biāo)簽名為name的信息
      namelist = objects.getElementsByTagName('name')
      # 通過(guò)此語(yǔ)句得到具體的某個(gè)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

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

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

000004 0.972 302.8 94.5 512.0 150.0
000004 0.950 348.1 166.1 512.0 242.9
000004 0.875 1.0 25.7 292.6 126.3
000004 0.730 1.0 138.5 488.3 230.0
000004 0.699 1.0 120.9 145.5 139.9
000004 0.592 54.4 227.4 431.9 343.4
000004 0.588 1.0 159.8 18.8 231.6
000004 0.126 1.0 247.1 342.3 270.0
000004 0.120 1.0 225.4 185.7 309.3

每行分別為 名稱(chēng) 檢測(cè)概率 xmin ymin xmax ymax

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

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

import os
import os.path
import numpy as np
import xml.etree.ElementTree as xmlET
from PIL import Image, ImageDraw
import 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()

運(yùn)行完即可在保存文件夾中得到效果圖。

以上這篇python目標(biāo)檢測(cè)給圖畫(huà)框,bbox畫(huà)到圖上并保存案例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Tensorflow卷積神經(jīng)網(wǎng)絡(luò)實(shí)例

    Tensorflow卷積神經(jīng)網(wǎng)絡(luò)實(shí)例

    這篇文章主要為大家詳細(xì)介紹了Tensorflow卷積神經(jīng)網(wǎng)絡(luò)實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • python中的sys模塊和os模塊

    python中的sys模塊和os模塊

    這篇文章主要介紹了python中的sys模塊和os模塊,sys模塊提供對(duì)解釋器使用或維護(hù)的一些變量的訪問(wèn),以及與解釋器強(qiáng)烈交互的函數(shù),os模塊提供了多數(shù)操作系統(tǒng)的功能接口函數(shù),下文更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-03-03
  • Python操作MongoDB數(shù)據(jù)庫(kù)PyMongo庫(kù)使用方法

    Python操作MongoDB數(shù)據(jù)庫(kù)PyMongo庫(kù)使用方法

    這篇文章主要介紹了Python操作MongoDB數(shù)據(jù)庫(kù)PyMongo庫(kù)使用方法,本文講解了創(chuàng)建連接、連接數(shù)據(jù)庫(kù)、連接聚集、查看全部聚集名稱(chēng)、查看聚集的一條記錄等操作方法,需要的朋友可以參考下
    2015-04-04
  • python3+PyQt5實(shí)現(xiàn)拖放功能

    python3+PyQt5實(shí)現(xiàn)拖放功能

    這篇文章主要為大家詳細(xì)介紹了python3+PyQt5實(shí)現(xiàn)拖放功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python中關(guān)于property使用的小技巧

    Python中關(guān)于property使用的小技巧

    俗話說(shuō)條條大路通羅馬,同樣是完成一件事,Python 其實(shí)提供了好幾個(gè)方式供你選擇。property() 是一個(gè)比較奇葩的BIF,它的作用把方法當(dāng)作屬性來(lái)訪問(wèn),從而提供更加友好訪問(wèn)方式
    2021-09-09
  • 使用Python從零開(kāi)始擼一個(gè)區(qū)塊鏈

    使用Python從零開(kāi)始擼一個(gè)區(qū)塊鏈

    對(duì)數(shù)字貨幣的崛起感到新奇的我們,并且想知道其背后的技術(shù)——區(qū)塊鏈?zhǔn)窃鯓訉?shí)現(xiàn)的。這篇文章主要介紹了使用Python從零開(kāi)始擼一個(gè)區(qū)塊鏈,需要的朋友可以參考下
    2018-03-03
  • Python如何調(diào)用外部系統(tǒng)命令

    Python如何調(diào)用外部系統(tǒng)命令

    這篇文章主要介紹了Python如何調(diào)用外部系統(tǒng)命令,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 解決Python中pandas讀取*.csv文件出現(xiàn)編碼問(wèn)題

    解決Python中pandas讀取*.csv文件出現(xiàn)編碼問(wèn)題

    很多朋友在使用Python中pandas讀取csv文件時(shí),出現(xiàn)編碼格式問(wèn)題,接下來(lái)通過(guò)本文給大家分享解決Python中pandas讀取*.csv文件出現(xiàn)編碼問(wèn)題,需要的朋友可以參考下
    2019-07-07
  • Django日志和調(diào)試工具欄實(shí)現(xiàn)高效的應(yīng)用程序調(diào)試和性能優(yōu)化

    Django日志和調(diào)試工具欄實(shí)現(xiàn)高效的應(yīng)用程序調(diào)試和性能優(yōu)化

    這篇文章主要介紹了Django日志和調(diào)試工具欄實(shí)現(xiàn)高效的應(yīng)用程序調(diào)試和性能優(yōu)化,Django日志和調(diào)試工具欄為開(kāi)發(fā)者提供了快速定位應(yīng)用程序問(wèn)題的工具,可提高調(diào)試和性能優(yōu)化效率,提高應(yīng)用程序的可靠性和可維護(hù)性
    2023-05-05
  • python?中Mixin混入類(lèi)的使用方法詳解

    python?中Mixin混入類(lèi)的使用方法詳解

    這篇文章主要介紹了python?中Mixin混入類(lèi)的使用方法詳解,Mixin?混入也可以說(shuō)是編程模式,并不是什么新的語(yǔ)法,用好混入類(lèi)可以使自己的代碼結(jié)構(gòu)清晰,功能明了,所以以后在設(shè)計(jì)類(lèi)時(shí)要多考慮使用Mixin混入類(lèi)的實(shí)現(xiàn)方式
    2022-07-07

最新評(píng)論