最近用到了xml格式的文件,对这些没啥印象,顺便学习一下,做个例子,方便后续查阅。
xml文档:

1 <annotation> 2 <folder>VOC2012</folder> 3 <filename>2007_000027.jpg</filename> 4 <source> 5 <database>The VOC2007 Database</database> 6 <annotation>PASCAL VOC2007</annotation> 7 <image>flickr</image> 8 </source> 9 <size> 10 <width>486</width> 11 <height>500</height> 12 <depth>3</depth> 13 </size> 14 <segmented>0</segmented> 15 <object> 16 <name>person</name> 17 <pose>Unspecified</pose> 18 <truncated>0</truncated> 19 <difficult>0</difficult> 20 <bndbox> 21 <xmin>174</xmin> 22 <ymin>101</ymin> 23 <xmax>349</xmax> 24 <ymax>351</ymax> 25 </bndbox> 26 <part> 27 <name>head</name> 28 <bndbox> 29 <xmin>169</xmin> 30 <ymin>104</ymin> 31 <xmax>209</xmax> 32 <ymax>146</ymax> 33 </bndbox> 34 </part> 35 <part> 36 <name>hand</name> 37 <bndbox> 38 <xmin>278</xmin> 39 <ymin>210</ymin> 40 <xmax>297</xmax> 41 <ymax>233</ymax> 42 </bndbox> 43 </part> 44 <part> 45 <name>foot</name> 46 <bndbox> 47 <xmin>273</xmin> 48 <ymin>333</ymin> 49 <xmax>297</xmax> 50 <ymax>354</ymax> 51 </bndbox> 52 </part> 53 <part> 54 <name>foot</name> 55 <bndbox> 56 <xmin>319</xmin> 57 <ymin>307</ymin> 58 <xmax>340</xmax> 59 <ymax>326</ymax> 60 </bndbox> 61 </part> 62 </object> 63 </annotation>
使用python代码读取里面的内容:

1 #python3 2 # -- coding: utf-8 -- 3 4 import numpy as np 5 import xml.etree.ElementTree as ET 6 7 et = ET.parse('test.xml') 8 element = et.getroot() 9 10 # 获取所有object对象 11 element_objs = element.findall('object') 12 # 图片文件名 13 element_filename = element.find('filename').text 14 print('element_filename:' , element_filename) 15 element_width = int(element.find('size').find('width').text) 16 element_height = int(element.find('size').find('height').text) 17 18 if len(element_objs) > 0: 19 for element_obj in element_objs: 20 class_name = element_obj.find('name').text 21 print('class_name:' , class_name) 22 23 obj_bbox = element_obj.find('bndbox') 24 x1 = int(round(float(obj_bbox.find('xmin').text))) 25 y1 = int(round(float(obj_bbox.find('ymin').text))) 26 x2 = int(round(float(obj_bbox.find('xmax').text))) 27 y2 = int(round(float(obj_bbox.find('ymax').text))) 28 print('(x1,y1,x2,y2):' , (x1 , y1 , x2 , y2))
每日一言:
无冥冥之志者,无昭昭之明,无昏昏之事者,无赫赫之功。
参考文档:https://blog.csdn.net/hanshuobest/article/details/78604704