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编程实现控制cmd命令行显示颜色的方法示例
Aug 14 Python
go和python变量赋值遇到的一个问题
Aug 31 Python
python3 selenium 切换窗口的几种方法小结
May 21 Python
利用pyinstaller打包exe文件的基本教程
May 02 Python
python 判断文件还是文件夹的简单实例
Jun 10 Python
对Python中小整数对象池和大整数对象池的使用详解
Jul 09 Python
python3使用GUI统计代码量
Sep 18 Python
解决Python Matplotlib绘图数据点位置错乱问题
May 16 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 Python
浅谈python锁与死锁问题
Aug 14 Python
Python字符串对齐方法使用(ljust()、rjust()和center())
Apr 26 Python
python实现学生信息管理系统(面向对象)
Jun 05 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中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
在php MYSQL中插入当前时间
2008/04/06 PHP
PHP运行时强制显示出错信息的代码
2011/04/20 PHP
PHP获取网页所有连接的方法(附demo源码下载)
2016/03/30 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
jquery之超简单的div显示和隐藏特效demo(分享)
2013/07/09 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
D3.js实现饼状图的方法详解
2016/09/21 Javascript
Vue 2.x教程之基础API
2017/03/06 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
2017/12/05 jQuery
vue 注册组件的使用详解
2018/05/05 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python进程间通信之共享内存详解
2017/10/30 Python
Python+PIL实现支付宝AR红包
2018/02/09 Python
使用实现pandas读取csv文件指定的前几行
2018/04/20 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
对python 自定义协议的方法详解
2019/02/13 Python
python3 深浅copy对比详解
2019/08/12 Python
django实现将后台model对象转换成json对象并传递给前端jquery
2020/03/16 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
设计师个人求职信范文
2014/02/02 职场文书
法定代表人授权委托书
2014/04/04 职场文书
作文评语集锦
2014/12/25 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
MySQL数据库查询进阶之多表查询详解
2022/04/08 MySQL