將目標檢測的xml目標繪製在影象中
阿新 • • 發佈:2018-12-17
用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)