修改数据集xml改变标注框位置
1.xml.dom.minidom相关知识:
1.parse返回dom对象,使用DOM的documentElement属性可以获得root Element。
DOMTree = xml.dom.minidom.parse(path)
collection = DOMTree.documentElement
2.DOM为树形结构,每一个node 有nodeName,nodeValue和nodeValue。nodeType有:
'ATTRIBUTE_NODE'
'CDATA_SECTION_NODE'
'COMMENT_NODE'
'DOCUMENT_FRAGMENT_NODE'
'DOCUMENT_NODE'
'DOCUMENT_TYPE_NODE'
'ELEMENT_NODE'
'ENTITY_NODE'
'ENTITY_REFERENCE_NODE'
'NOTATION_NODE'
'PROCESSING_INSTRUCTION_NODE'
'TEXT_NODE'
但是nodeValue只对textNode 有效,对别的节点无效。textNode同样可以使用data属性来获得文本内容,其它节点没有data属性。
<width>zh is smart</width>
for width in collection.getElementsByTagName("width"):print(width.nodeValue) #noneprint(width.firstChild.nodeValue) #zh is smartwidthVal = width.firstChild.data#width的type为element node,没有data属性,nodeValue属性对其无效
#width.firstChild 为text node,"zh is smart",其data 属性和nodeValue属性均为"zh is smart"
3.getElementsByTagName()可以根据名字来查找elements,可以得到一个nodeList.
widths = collection.getElementByTagName("width")
4.chilsNodes可以得到所有的子nodes,其中所有的文本皆为textNode。firstChild返回第一个子节点。
5.writexml()addindent=’ ‘表示子元素的缩进,newl=’\n’表示元素间的换行,encoding='utf-8’表示生成的xml的编码格式(<?xml version="1.0" encoding="utf-8"?>)。
f = open( 'image2.xml' , 'w') DOMTree.writexml(f, addindent = ' ' , newl = '\n' ,encoding = 'utf-8' )
2.下面贴应用代码:
应用背景:制作pascal voc数据集之前忘记resize,所以只能修改xml 文件中框的位置来使其匹配resize之后的图片。
import os
import xml.dom.minidom
#resize之后的宽和高
newheight = 256
newwidth = 256
root = "/home/danale/Desktop/six/" #视频文件夹
for xmlfile in os.listdir(root):DOMTree = xml.dom.minidom.parse(os.path.join(root, xmlfile))collection = DOMTree.documentElementfor width in collection.getElementsByTagName("width"):oldwidth = int(width.firstChild.data)width.firstChild.data = str(newwidth)for height in collection.getElementsByTagName("height"):oldheight = int(height.firstChild.data)height.firstChild.data = str(newheight)for xmin in collection.getElementsByTagName("xmin"):xmin.firstChild.data = int(int(xmin.firstChild.data) / 1.0 / oldwidth* newwidth)for xmax in collection.getElementsByTagName("xmax"):xmax.firstChild.data = int(int(xmax.firstChild.data) / 1.0 / oldwidth * newwidth)for ymin in collection.getElementsByTagName("ymin"):ymin.firstChild.data = int(int(ymin.firstChild.data) / 1.0 / oldheight * newheight)for ymax in collection.getElementsByTagName("ymax"):ymax.firstChild.data = int(int(ymax.firstChild.data) / 1.0 / oldheight * newheight)with open(os.path.join(root, xmlfile), 'w') as fh:DOMTree.writexml(fh)print('写入name/pose OK!')
修改数据集xml改变标注框位置相关推荐
- dataTable 改变搜索框位置
在"假药度"找了半天也找不到答案,只有自己琢磨出来. * 修改版本 1.9.4 * dataTable 类型 jquery.dataTables.js 我在 ...
- TXT文件转Pascal voc数据集XML格式标注文件
TXT的文件格式为 wmin,hmin,wmax,hmax 最终转换出来的效果为 代码: from xml.dom import minidomimport cv2txt_dirtory=r' ...
- 图像数据增强2_albumentation 标注框同时修改(VOC、YOLO)
主要参考: 图像样本增广,yoloV5扩展 Albumentation库 bbox使用案例代码 [YOLOV5-5.x 源码解读]general.py 这里写目录标题 albumentation 标注 ...
- VOC格式数据集操作类构建-2.统计数据集各类别标签数目和剪裁图像中标注框并保存图片
总目标:建立VOC格式数据集类以及操作内置函数 github项目地址(附有使用说明书): https://github.com/A-mockingbird/VOCtype-datasetOperati ...
- VOC数据集 XML 和 txt标注文本的理解
VOC数据集 XML 和 txt标注文本的理解 以VOC数据集中VOC2007中的000001.jpg图片为例,分析下其对应的Annotations文件夹下的000001.xml文件和labels文件 ...
- 【玩转华为云】手把手教你用Modelarts实现猫狗数据集的智能标注
本篇推文共计2000个字,阅读时间约3分钟. 华为云-华为公司倾力打造的云战略品牌,2011年成立,致力于为全球客户提供领先的公有云服务,包含弹性云服务器.云数据库.云安全等云计算服务,软件开发服务, ...
- 火狐浏览器改变书签栏位置_通过书签改善生活
火狐浏览器改变书签栏位置 书签是向Web浏览器添加功能的一种简单方法,对于作为Web开发人员的工作流可能是有用的添加. 在本文中,我将指出一些有用的书签,提供有关构建自己的书签的技巧,并演示一些利用这 ...
- 【玩转华为云】手把手教你利用ModelArts实现数据集的图像标注
本篇推文共计2000个字,阅读时间约3分钟. 华为云-华为公司倾力打造的云战略品牌,2011年成立,致力于为全球客户提供领先的公有云服务,包含弹性云服务器.云数据库.云安全等云计算服务,软件开发服务, ...
- 玩转肺癌目标检测数据集Lung-PET-CT-Dx ——②预览数据集,绘制锚框
文章目录 数据集预览 CT图片和xml文件的对应关系 查看dcm文件信息 将dcm图像与xml标注文件配对 本文接着预览数据集的概况,看看图像文件和标注文件该如何处理. 本文所用代码: 我的Githu ...
最新文章
- ValueError: cannot convert to ‘int64‘-dtype NumPy array with missing values. Specify an appropriate
- Serverless 解惑——函数计算如何访问 Mongo 数据库
- 2019-10-27 控制领域期刊介绍
- [性能测试]:关于MQ协议脚本开发
- iOS: 在Object-C中监听javascript事件( Javascript communicating back with Objective-C code)
- php iframe 上传文件,php+iframe 实现上传文件功能示例
- 【kafka】kafka_2.11-1.1.0 配置 SASL_PLAINTEXT 认证方式
- 重识 SQLite,简约不简单
- Linux中常用命令(初学者必备)
- java总结体会_Java课程总结心得体会
- 世界500强面试题(经典)
- 如何在word中实现连续编号自动打印
- Ubuntu截图快捷键
- SAP CO生产订单的标准成本、计划成本、实际成本和目标成本
- NAT环境下,内网用户使用公网地址访问内网服务器
- TypeScript-基础类型学习
- 【多线程】送你1万朵玫瑰花
- 《枪炮、病菌与钢铁》读后感
- 【Java中断言(assert)的理解】
- Jenkins+ansible+Tomcat实现项目远程自动部署