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 30 Python
Python yield 使用方法浅析
May 20 Python
Python3.6简单操作Mysql数据库
Sep 12 Python
Python mutiprocessing多线程池pool操作示例
Jan 30 Python
在Pytorch中计算自己模型的FLOPs方式
Dec 30 Python
Python+OpenCV实现将图像转换为二进制格式
Jan 09 Python
Python3 元组tuple入门基础
Feb 09 Python
Python读取表格类型文件代码实例
Feb 17 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
Python实现计算图像RGB均值方式
Jun 04 Python
Python析构函数__del__定义原理解析
Nov 20 Python
Python爬虫后获取重定向url的两种方法
Jan 19 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 ss7.5的数据调用 (笔记)
2010/03/08 PHP
PHP 加密解密内部算法
2010/04/22 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
PHP依赖注入原理与用法分析
2018/08/21 PHP
Extjs入门之动态加载树代码
2010/04/09 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
javascript函数式编程程序员的工具集
2015/10/11 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
基于jquery实现简单的分页控件
2016/03/17 Javascript
AngularJS  ng-repeat遍历输出的用法
2017/06/19 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
Python面向对象程序设计之私有属性及私有方法示例
2019/04/08 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
电脑售后服务承诺书
2014/03/27 职场文书
C++程序员求职信
2014/05/07 职场文书
幽默自我介绍演讲稿
2014/08/21 职场文书
作文评语集锦
2014/12/25 职场文书
2015年支教教师工作总结
2015/07/22 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
实习报告怎么写
2019/06/20 职场文书
浅析MongoDB之安全认证
2021/06/26 MongoDB