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之赋值,简单也不简单
Sep 24 Python
python通过装饰器检查函数参数数据类型的方法
Mar 13 Python
非递归的输出1-N的全排列实例(推荐)
Apr 11 Python
Python Numpy 数组的初始化和基本操作
Mar 13 Python
pandas将numpy数组写入到csv的实例
Jul 04 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 Python
Django中使用session保持用户登陆连接的例子
Aug 06 Python
Python OpenCV图像指定区域裁剪的实现
Oct 30 Python
wxPython电子表格功能wx.grid实例教程
Nov 19 Python
python实现人脸签到系统
Apr 13 Python
python自动化办公操作PPT的实现
Feb 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 论坛采集程序 模拟登陆,抓取页面 实现代码
2009/07/09 PHP
php+javascript的日历控件
2009/11/19 PHP
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP Hash算法:Times33算法代码实例
2015/05/13 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
php将html转为图片的实现方法
2017/05/19 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
Laravel框架控制器,视图及模型操作图文详解
2019/12/04 PHP
javascript小数计算出现近似值的解决办法
2010/02/06 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
JavaScript操纵窗口的方法小结
2013/06/28 Javascript
JavaScript正则表达式之multiline属性的应用
2015/06/16 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
JS字符串统计操作示例【遍历,截取,输出,计算】
2017/03/27 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
微信小程序时间控件picker view使用详解
2018/12/28 Javascript
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
Vue.js页面中有多个input搜索框如何实现防抖操作
2019/11/04 Javascript
Vue.directive 实现元素scroll逻辑复用
2019/11/29 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
2020/02/13 Javascript
js String.prototype.trim字符去前后空格的扩展
2020/08/23 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
2020/06/23 Python
Vision Directa智利眼镜网:框架眼镜、隐形眼镜和名牌太阳眼镜
2016/11/23 全球购物
草莓网化妆品日本站:Strawberrynet日本
2017/10/20 全球购物
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物