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改变标注框位置相关推荐

  1. dataTable 改变搜索框位置

    在"假药度"找了半天也找不到答案,只有自己琢磨出来. * 修改版本     1.9.4  * dataTable 类型        jquery.dataTables.js 我在 ...

  2. TXT文件转Pascal voc数据集XML格式标注文件

    TXT的文件格式为 wmin,hmin,wmax,hmax ​ 最终转换出来的效果为 ​ 代码: from xml.dom import minidomimport cv2txt_dirtory=r' ...

  3. 图像数据增强2_albumentation 标注框同时修改(VOC、YOLO)

    主要参考: 图像样本增广,yoloV5扩展 Albumentation库 bbox使用案例代码 [YOLOV5-5.x 源码解读]general.py 这里写目录标题 albumentation 标注 ...

  4. VOC格式数据集操作类构建-2.统计数据集各类别标签数目和剪裁图像中标注框并保存图片

    总目标:建立VOC格式数据集类以及操作内置函数 github项目地址(附有使用说明书): https://github.com/A-mockingbird/VOCtype-datasetOperati ...

  5. VOC数据集 XML 和 txt标注文本的理解

    VOC数据集 XML 和 txt标注文本的理解 以VOC数据集中VOC2007中的000001.jpg图片为例,分析下其对应的Annotations文件夹下的000001.xml文件和labels文件 ...

  6. 【玩转华为云】手把手教你用Modelarts实现猫狗数据集的智能标注

    本篇推文共计2000个字,阅读时间约3分钟. 华为云-华为公司倾力打造的云战略品牌,2011年成立,致力于为全球客户提供领先的公有云服务,包含弹性云服务器.云数据库.云安全等云计算服务,软件开发服务, ...

  7. 火狐浏览器改变书签栏位置_通过书签改善生活

    火狐浏览器改变书签栏位置 书签是向Web浏览器添加功能的一种简单方法,对于作为Web开发人员的工作流可能是有用的添加. 在本文中,我将指出一些有用的书签,提供有关构建自己的书签的技巧,并演示一些利用这 ...

  8. 【玩转华为云】手把手教你利用ModelArts实现数据集的图像标注

    本篇推文共计2000个字,阅读时间约3分钟. 华为云-华为公司倾力打造的云战略品牌,2011年成立,致力于为全球客户提供领先的公有云服务,包含弹性云服务器.云数据库.云安全等云计算服务,软件开发服务, ...

  9. 玩转肺癌目标检测数据集Lung-PET-CT-Dx ——②预览数据集,绘制锚框

    文章目录 数据集预览 CT图片和xml文件的对应关系 查看dcm文件信息 将dcm图像与xml标注文件配对 本文接着预览数据集的概况,看看图像文件和标注文件该如何处理. 本文所用代码: 我的Githu ...

最新文章

  1. ValueError: cannot convert to ‘int64‘-dtype NumPy array with missing values. Specify an appropriate
  2. Serverless 解惑——函数计算如何访问 Mongo 数据库
  3. 2019-10-27 控制领域期刊介绍
  4. [性能测试]:关于MQ协议脚本开发
  5. iOS: 在Object-C中监听javascript事件( Javascript communicating back with Objective-C code)
  6. php iframe 上传文件,php+iframe 实现上传文件功能示例
  7. 【kafka】kafka_2.11-1.1.0 配置 SASL_PLAINTEXT 认证方式
  8. 重识 SQLite,简约不简单
  9. Linux中常用命令(初学者必备)
  10. java总结体会_Java课程总结心得体会
  11. 世界500强面试题(经典)
  12. 如何在word中实现连续编号自动打印
  13. Ubuntu截图快捷键
  14. SAP CO生产订单的标准成本、计划成本、实际成本和目标成本
  15. NAT环境下,内网用户使用公网地址访问内网服务器
  16. TypeScript-基础类型学习
  17. 【多线程】送你1万朵玫瑰花
  18. 《枪炮、病菌与钢铁》读后感
  19. 【Java中断言(assert)的理解】
  20. Jenkins+ansible+Tomcat实现项目远程自动部署

热门文章

  1. 调用百度ai人脸检测接口
  2. 教程 | 10分钟成为简笔画达人,然后......
  3. 微信跳一跳外挂辅助流程 (MAC+iOS)
  4. Android 性能优化之旋转屏幕优化
  5. 商标被驳回,先别慌!挽回商标有办法
  6. 《长安十二时辰》的大案牍术到底是啥?
  7. 中国销售房产增值税怎么计算
  8. Unity游戏开发基础知识(新手必看)
  9. 投稿别踩雷!| SCI论文重复率问题不容小觑
  10. 北京化工大学1/17寒假集训题解(>1800)