老卫带你学---python提取xml中的信息(用于提取faster-rcnn的annotations的xml文件的坐标信息)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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)文件,就会将其坐标信息提取出来。
这里写图片描述

这里写图片描述

猜你喜欢

转载自blog.csdn.net/yixieling4397/article/details/82193391
今日推荐