1. 程式人生 > >將目標檢測的xml目標繪製在影象中

將目標檢測的xml目標繪製在影象中

用xml.etree.ElementTree庫來解析xml檔案

1.解析:ET.parse()

2.獲取根節點:getroot()

3.找節點用find() 和findall()

4.

   .text 是內容 #本程式碼用到.text

   .tag 是題目

   .attrib 是屬性

5.用cv2繪圖

提取出來座標,然後rectangle(圖片,左上角座標,右下角座標,框顏色,框線粗細)

把目標名字輸出:putTEXT(圖片,目標名字,起始座標,字型,字型大小,字型顏色,粗細)

其他:兩個find()定位到<bndbox>節點下,才能去提取xmin等四個值。還有另一個xml解析庫,為xml.dom.minidom

沒用過,但看起來差不多。效果都一樣,熟悉一個就行。

# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET  
import os,cv2

xml_file='C:/Users/nansbas/Desktop/01_000002_01244-01086_0939-0989.xml'
tree=ET.parse(xml_file)
root=tree.getroot()
imgfile='C:/Users/nansbas/Desktop/01_000002_01244-01086_0939-0989.jpg'
im = cv2.imread(imgfile)
for object in root.findall('object'):
    object_name=object.find('name').text
    Xmin=int(object.find('bndbox').find('xmin').text)
    Ymin=int(object.find('bndbox').find('ymin').text)
    Xmax=int(object.find('bndbox').find('xmax').text)
    Ymax=int(object.find('bndbox').find('ymax').text)
    color = (4, 250, 7)
    cv2.rectangle(im,(Xmin,Ymin),(Xmax,Ymax),color,2)
    font = cv2.FONT_HERSHEY_SIMPLEX  
    cv2.putText(im, object_name, (Xmin,Ymin - 7), font, 0.5, (6, 230, 230), 2)
    cv2.imshow('01',im)
cv2.imwrite('C:/Users/nansbas/Desktop/02.jpg', im)