pascalVOC 标注文件,解析为TXT
首先,读取所有xml文件完整路径,写入train.txt 文本文档中,
然后读取TXT文档,逐行读取xml文档,建文件夹,用于保存解析好的TXT,写入TXT时,只需要保存类别名和坐标信息即可,中间用Tab分割
#!/usr/bin/evn python
# coding:utf-8
import os
import glob try:
import xml.etree.cElementTree as ET
except ImportError:
import xml.etree.ElementTree as ET
import sys # filename = os.listdir('F:/snow leopard/000_IMAGE_FRAME/000_B_XML/')
filename = glob.glob('F:/snow leopard/000_IMAGE_FRAME/000_B_XML/' + '*xml')
fileObject = open('train.txt', 'w') for ip in filename:
fileObject.write(ip)
fileObject.write('\n')
fileObject.close() file_srx = open("train.txt") #其中包含所有待计算的文件名
line = file_srx.readline()
while line:
f = line[:-1] # 除去末尾的换行符
tree = ET.parse(f) #打开xml文档
root = tree.getroot() #获得root节点
print ("*"*10)
filename = root.find('filename').text
filename = filename[:-4]
print (filename) dir_name = 'F:/snow leopard/Data preprocessing/txt'
if os.path.exists(dir_name) == False:
os.mkdir(dir_name) # file_object_txt = open(dir_name +'/' + filename + ".txt","a")
# # file_object_txt = open(dir_name, 'w') #写文件
# file_object_txt.write(filename +'\t') # file_object_log = open(filename + ".log", 'w') #写文件
flag = False ########################################
for size in root.findall('size'): #找到root节点下的size节点
width = size.find('width').text #子节点下节点width的值
height = size.find('height').text #子节点下节点height的值
print (width, height)
######################################## for object in root.findall('object'): #找到root节点下的所有object节点
name = object.find('name').text #子节点下节点name的值
file_object_txt = open(dir_name +'/' + filename + ".txt","a")
# file_object_txt = open(dir_name, 'w') #写文件
file_object_txt.write(name +'\t')
print (name)
bndbox = object.find('bndbox') #子节点下属性bndbox的值
xmin = bndbox.find('xmin').text
ymin = bndbox.find('ymin').text
xmax = bndbox.find('xmax').text
ymax = bndbox.find('ymax').text
file_object_txt.write(xmin+'\t' + ymin + '\t'+ xmax + '\t'+ ymax) print (xmin, ymin, xmax, ymax)
file_object_txt.close()
# file_object_log.close()
if flag == False: #如果没有符合条件的信息,则删掉相应的txt文件以及jpg文件
#os.remove(filename + ".txt")
#os.remove(filename + ".jpg")
# os.remove(filename + ".log")
pass
line = file_srx.readline()
参考: https://www.cnblogs.com/rainsoul/p/6283231.html
pascalVOC 标注文件,解析为TXT的更多相关文章
- PHP - 四级单词lrc文件解析为txt
原始文件: 转换后文件: php代码: 首先根据需要更改文件路径. 转换后存放的文件要事先创建,为txt文件. 核心代码:正则表达式替换: <?php header('Content-type: ...
- Python 网络爬虫 010 (高级功能) 解析 robots.txt 文件
解析 robots.txt 文件 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 Python 的集成开发环境:PyCharm 2016 ...
- Python生成PASCAL VOC格式的xml标注文件
Python生成PASCAL VOC格式的xml标注文件 PASCAL VOC数据集的标注文件是xml格式的.对于py-faster-rcnn,通常以下示例的字段是合适的: <annotatio ...
- pcap文件格式及文件解析
第一部分:PCAP包文件格式 一 基本格式: 文件头 数据包头数据报数据包头数据报...... 二.文件头: 文件头结构体 sturct pcap_file_header { DWORD ...
- C语言中.h和.c文件解析(很精彩)
C语言中.h和.c文件解析(很精彩) 简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析 ...
- C语言中.h和.c文件解析
整理自C语言中.h和.c文件解析(很精彩) Part.1(林锐<高质量C/C++编程>) 通过头文件来调用库功能.在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的 ...
- 【转】java将excel文件转换成txt格式文件
在实际应用中,我们难免会遇到解析excel文件入库事情,有时候为了方便,需要将excel文件转成txt格式文件.下面代码里面提供对xls.xlsx两种格式的excel文件解析,并写入到一个新的txt文 ...
- 转-C语言中.h和.c文件解析
C语言中.h和.c文件解析(很精彩) 简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词 ...
- MyBatis 源码分析 - 映射文件解析过程
1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程.由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因.所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来, ...
随机推荐
- 【原】【BG】-一次虚拟化环境实践简要记录
部分涉及到Linux.Nginx.tomcat.MySQL等的点滴操作记录,时间长了,就忘掉了,偶尔整理一下操作的history,就此简要备份一下: [原][BG]-一次虚拟化环境实践简要记录: ht ...
- 通过HttpClient4.5模拟Form表单文件上传
public static void main(String[] args) { CloseableHttpClient httpclient = HttpClients.createDefault( ...
- jquery 如何获取有多个class名的元素
1.情景展示 如何使用jquery获取带有多个class样式的元素? 2.解决方案 $("p.opinion.mb15.gray2e.max2line.mr20:contains('大摩 ...
- ibatis 批量更新(二)
1.情景展示 oracle数据库中,需要根据指定字段内容调用加密程序后,根据主键id进行更新其对应的字段mindex_id的值: 加密通过Java实现,然后通过Java对其进行更新: Java使用 ...
- 转 安装Nginx 1.2.0+PHP 5.4.3(FastCGI)+MySQL 5.5.24
硬件环境:Dell PowerEdge 1950,4核Intel(R) Xeon(R) CPU E5410 @ 2.33GHz4G内存 系统环境:CentOS release 5.2,内核版本: 2 ...
- 《Java设计模式》之模板方法模式
模板方法模式是类的行为模式.准备一个抽象类.将部分逻辑以详细方法以及详细构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑.不同的子类能够以不同的方式实现这些抽象方法,从而对剩余的逻辑有 ...
- samba服务的高级进阶配置
本文将学习一下几个方面的内容,将会结合具体的实验来一步步实现. 1. 用户账号的映射 2. 使用IP对客户端进行访问控制 3. 使用域名对客户端进行访问控制 4. 使用通配符对客户端进行访问控制 5. ...
- mvn jetty debug
使用mvn jetty:run很爽吧,但是怎么debug了,找了Google的N多老外文章,终于可以了,文章链接:http://gaertig.pl/blog/en/2009/03/debug-jet ...
- 我的学习工作经历,一个园林专业中专毕业生的IT之路 学习编程 创业
我的学习工作经历,一个园林专业中专毕业生的IT之路 魏琼东,男,1983年生人,祖籍甘肃陇南人,首先得感谢我父亲给我取了这么一个好名字,至少我非常喜欢他,因为目前还没有发现和我同名的人. 我是1998 ...
- Linux提示“libc.so.6: version `GLIBC_2.14' not found”系统的glibc版本太低
http://www.linuxidc.com/Linux/2017-01/139806.htm http://www.linuxidc.com/Linux/2015-04/116472.htm