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

 更新时间:2020年11月26日 15:30:22   作者:一只有理想的喵(>^ω^<)  
这篇文章主要介绍了Python批量修改xml的坐标值全部转为整数的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

发现一个有意思的现象,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数据可视化实现正态分布(高斯分布)

    Python数据可视化实现正态分布(高斯分布)

    这篇文章主要介绍了Python数据可视化实现正态分布(高斯分布),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Java编程迭代地删除文件夹及其下的所有文件实例

    Java编程迭代地删除文件夹及其下的所有文件实例

    这篇文章主要介绍了Java编程迭代地删除文件夹及其下的所有文件实例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Python WSGI的深入理解

    Python WSGI的深入理解

    这篇文章主要给大家介绍了关于Python WSGI的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • Pycharm使用Database Navigator连接mysql数据库全过程

    Pycharm使用Database Navigator连接mysql数据库全过程

    这篇文章主要介绍了Pycharm使用Database Navigator连接mysql数据库全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 基于python requests库中的代理实例讲解

    基于python requests库中的代理实例讲解

    今天小编就为大家分享一篇基于python requests库中的代理实例讲解,具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python中MySQLdb模块用法实例

    python中MySQLdb模块用法实例

    这篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • 详解Swift中属性的声明与作用

    详解Swift中属性的声明与作用

    Swift中的属性可以被分为存储属性和计算属性,本文将为大家详解Swift中属性的声明与作用,需要的朋友可以参考下
    2016-06-06
  • 详细解析Python中__init__()方法的高级应用

    详细解析Python中__init__()方法的高级应用

    这篇文章主要介绍了详细解析Python中__init__()方法的高级应用,包括在映射和elif序列等地方的更为复杂的用法,需要的朋友可以参考下
    2015-05-05
  •  python用matplotlib可视化绘图详解

     python用matplotlib可视化绘图详解

    这篇文章主要介绍了 python用matplotlib可视化绘图详解,Matplotlib 是一个python的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,下面我们就来看看关于matplotlib可视化绘图的详细过程吧
    2022-01-01
  • 全面解读Python Web开发框架Django

    全面解读Python Web开发框架Django

    Django是一个开源的Web应用框架,由Python写成。采用MVC的软件设计模式,主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don’t Repeat Yoursef)。
    2014-06-06

最新评论