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中遇到的小问题及解决方法汇总
Jan 11 Python
安装Python和pygame及相应的环境变量配置(图文教程)
Jun 04 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
Nov 06 Python
Python利用openpyxl库遍历Sheet的实例
May 03 Python
Python引用计数操作示例
Aug 23 Python
Python获取航线信息并且制作成图的讲解
Jan 03 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
解决python对齐错误的方法
Jul 16 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 Python
浅谈Python3中datetime不同时区转换介绍与踩坑
Aug 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
Home Coffee Roasting
2021/03/03 咖啡文化
PHP等比例压缩图片的实例代码
2018/07/26 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
JS获取客户端IP地址、MAC和主机名的7个方法汇总
2014/07/21 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
使用JavaScript制作一个简单的计数器的方法
2015/07/07 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
浅析JS中常用类型转换及运算符表达式
2017/07/23 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
Vue实现按钮旋转和移动位置的实例代码
2018/08/09 Javascript
vue2.0 可折叠列表 v-for循环展示的实例
2018/09/07 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
JS 5种遍历对象的方式
2020/06/16 Javascript
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
Python面向对象之继承代码详解
2018/01/29 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
python实现电子词典
2020/03/03 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
Python PyQt5整理介绍
2020/04/01 Python
用python-webdriver实现自动填表的示例代码
2021/01/13 Python
css3动画效果小结(推荐)
2016/07/25 HTML / CSS
HTML5单页面手势滑屏切换原理分析
2017/07/10 HTML / CSS
大学生毕业自我评价范文分享
2013/11/07 职场文书
美容院营销方案
2014/03/05 职场文书
护士自我推荐信范文
2015/03/24 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
spring cloud eureka 服务启动失败的原因分析及解决方法
2022/03/17 Java/Android