敏捷开发 - 目标检测
工作中经常会有一些重复的工作,写过的脚本找起来很费劲,有时候还需要重新写,比如生成训练模型所需要的voc格式的label、json转voc、解析voc画在原图上方便查看…
解析voc格式的label并check
<annotation>
<folder>detect</folder>
<filename>img0423.png</filename>
<path>E:\egg_gait\data_2019_11_04\detect\img0423.png</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>1280</width>
<height>720</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>egg</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>7</xmin>
<ymin>43</ymin>
<xmax>764</xmax>
<ymax>712</ymax>
</bndbox>
</object>
</annotation>
demo程序
import os
import cv2
import numpy as np
from lxml import etree
import os.path as osp
def parse_voc_xml(xml_path):
"""
return [[class, xmin, ymin, xmax, ymax], ..., [.....]]
"""
tree = etree.parse(xml_path)
root = tree.getroot()
height, width = 0, 0
boxes = list()
for article in root:
box = list()
# print("element name:", article.tag)
# print("element content:", article.text)
if article.tag == "filename":
print(article.text)
# size
if article.tag == "size":
for field in article:
if field.tag == "width":
width = int(field.text)
if field.tag == "height":
height = int(field.text)