Python批量修改xml的坐标值全部转为整数的实例代码


Posted in Python onNovember 26, 2020

发现一个有意思的现象,labelimg打开图片和xml标签时候,看不到标注好的框框,仔细查看了xml文件,没发现什么异常,后面试一下,才发现是不能识别xml里的坐标值有小数点的情况。只能四舍五入都转成整数。
如:

<bndbox>
  <xmin>1404.35</xmin>
  <ymin>0</ymin>
  <xmax>1458.56</xmax>
  <ymax>111.96</ymax>
 </bndbox>
# *_* coding : UTF-8 *_*
# 开发人员: csu·pan-_-||
# 开发时间: 2020/11/25 21:42
# 文件名称: resize_img_xml.py
# 开发工具: PyCharm
# 功能描述: 改变xml文件里的某个属性


import os
import xml.etree.ElementTree as ET

path = r'C:\Users\Administrator\Desktop\JPEGImages' # 包含xml的文件夹路径

def edit_xml(xml_file):
 """
 修改xml文件
 :param xml_file:xml文件的路径
 :return:
 """
 all_xml_file = os.path.join(path, xml_file)
 tree = ET.parse(all_xml_file)
 print(all_xml_file)
 objs = tree.findall('object')
 for ix, obj in enumerate(objs):
  obj_bnd = obj.find('bndbox')
  obj_xmin = obj_bnd.find('xmin')
  obj_ymin = obj_bnd.find('ymin')
  obj_xmax = obj_bnd.find('xmax')
  obj_ymax = obj_bnd.find('ymax')
  xmin = float(obj_xmin.text)
  ymin = float(obj_ymin.text)
  xmax = float(obj_xmax.text)
  ymax = float(obj_ymax.text)
  obj_xmin.text = str(round(xmin)) #四舍五入转为整数
  obj_ymin.text = str(round(ymin))
  obj_xmax.text = str(round(xmax))
  obj_ymax.text = str(round(ymax))

 tree.write(all_xml_file, method='xml', encoding='utf-8') # 覆盖更新xml文件

if __name__ == '__main__':
 files = os.listdir(path)    # 获取文件名列表
 for i, file in enumerate(files):
  if file.endswith('.xml'):
   edit_xml(file)

转完之后,标签就可以正常看到了

Python批量修改xml的坐标值全部转为整数的实例代码

到此这篇关于Python批量修改xml的坐标值全部转为整数的文章就介绍到这了,更多相关Python批量修改xml内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python异步任务队列示例
Apr 01 Python
Python def函数的定义、使用及参数传递实现代码
Aug 10 Python
Pyhton中防止SQL注入的方法
Feb 05 Python
python3实现暴力穷举博客园密码
Jun 19 Python
python中json格式数据输出的简单实现方法
Oct 31 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
Python3.5基础之NumPy模块的使用图文与实例详解
Apr 24 Python
python psutil模块使用方法解析
Aug 01 Python
利用Python实现Excel的文件间的数据匹配功能
Jun 16 Python
python 5个顶级异步框架推荐
Sep 09 Python
Python爬虫简单运用爬取代理IP的实现
Dec 01 Python
python爬虫破解字体加密案例详解
Mar 02 Python
Django filter动态过滤与排序实现过程解析
Nov 26 #Python
python中用ctypes模拟点击的实例讲解
Nov 26 #Python
python爬虫分布式获取数据的实例方法
Nov 26 #Python
python分布式爬虫中消息队列知识点详解
Nov 26 #Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 #Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 #Python
最新PyCharm 2020.2.3永久激活码(亲测有效)
Nov 26 #Python
You might like
PHP通过iconv将字符串从GBK转换为UTF8字符集
2011/07/18 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
2019/10/18 PHP
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
jQuery实现根据滚动条位置加载相应内容功能
2016/07/18 Javascript
onmouseover事件和onmouseout事件全面理解
2016/08/15 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
微信小程序 出现错误:{&quot;baseresponse&quot;:{&quot;errcode&quot;:-80002,&quot;errmsg&quot;:&quot;&quot;}}解决办法
2017/02/23 Javascript
vue2.0全局组件之pdf详解
2017/06/26 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
微信小程序 共用变量值的实现
2017/07/12 Javascript
vue动态路由实现多级嵌套面包屑的思路与方法
2017/08/16 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
JavaScript实现数字前补“0”的五种方法示例
2019/01/03 Javascript
js实现开关灯效果
2020/03/30 Javascript
es6中class类静态方法,静态属性,实例属性,实例方法的理解与应用分析
2020/02/15 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
python实现的文件夹清理程序分享
2014/11/22 Python
python中实现迭代器(iterator)的方法示例
2017/01/19 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
高中校园广播稿
2014/01/11 职场文书
幼儿园门卫制度
2014/01/29 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
2014年学前班工作总结
2014/12/08 职场文书
大连导游词
2015/02/12 职场文书
辩论赛新闻稿
2015/07/17 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
详解Go与PHP的语法对比
2021/05/29 PHP
MySQL如何修改字段类型和字段长度
2022/06/10 MySQL