版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yixieling4397/article/details/82193391
在研究faster-rcnn的时候,需要进行标签与图片的尺寸缩放,这时,需要将xml中的坐标信息提取出来,于是有了以下的代码。
该段代码(python_xml.py)可以将使用labelimg工具生成的xml文件中的坐标信息提取出来。
# -*- coding:utf-8 -*-
#作者:卫毅然
#联系邮箱:2205492446@qq.com
import xml.dom.minidom
import os
import argparse
parse=argparse.ArgumentParser()
parse.add_argument('-o','--object')
args=parse.parse_args()
object=args.object
xml_name=object
txt_name=os.path.splitext(xml_name)[0]
DOMTree = xml.dom.minidom.parse(xml_name)
collection = DOMTree.documentElement
objects=collection.getElementsByTagName("object")
objects_num=len(objects)
print objects_num
f=open(txt_name+'.txt', 'w')
f.writelines(str(objects_num)+'\n')
for object in objects:
print ("*****Object*****")
bndbox = object.getElementsByTagName('bndbox')[0]
xmin = bndbox.getElementsByTagName('xmin')[0]
xmin_data=xmin.childNodes[0].data
print xmin_data
ymin = bndbox.getElementsByTagName('ymin')[0]
ymin_data=ymin.childNodes[0].data
print ymin_data
xmax = bndbox.getElementsByTagName('xmax')[0]
xmax_data=xmax.childNodes[0].data
print xmax_data
ymax = bndbox.getElementsByTagName('ymax')[0]
ymax_data=ymax.childNodes[0].data
print ymax_data
f.writelines(str(xmin_data)+' '+str(ymin_data)+' '+str(xmax_data)+' '+str(ymax_data)+'\n')
f.close()
但是为了方便操作,于是老卫又写了一段自动化运行脚本(auto_python_xml.py),因为数据太多,一个一个处理太过麻烦。
import os
path='/home/hades/Documents/shiguanai/annotations_test'
for maindir,subdir,filenames in os.walk(path):
for filename in filenames:
print filename
os.system('python python_xml.py -o %s' % filename)
在使用的时候,将这两个代码放入你存储xml的文件夹中,运行(auto_python_xml.py)文件,就会将其坐标信息提取出来。