当前位置: 首页 > news >正文

目标检测项目中,使用python+xml.etree.ElementTree修改xml格式标注文件中的类别名称

需求:
        数据集的数据增强中,有时需要将xml标注文件中的类别做修改为新类别,或者将几个类别合并为一个类别。
 
解决方法:
        使用python+import xml.etree.ElementTree将xml标注文件中的类别名称做修改。代码如下:

import os
import glob
import xml.etree.ElementTree as etdef change_labels(source_dir):file_list = glob.glob(os.path.join(source_dir,"*.xml"))print(len(file_list))index = 1for file in file_list:print(file,index)index += 1tree_ = et.ElementTree()tree_.parse(file)root = et.Element("annotation")folder = et.SubElement(root, "folder")folder.text = "images"filename = et.SubElement(root, "filename")filename.text = tree_.find(".//filename").textpath = et.SubElement(root, "path")path.text = "/home/Desktop/labels"source = et.SubElement(root, "source")database = et.SubElement(source, "database")database.text = "Unknown"size = et.SubElement(root, "size")width = et.SubElement(size, "width")width.text = tree_.find(".//width").textheight = et.SubElement(size, "height")height.text = tree_.find(".//height").textdepth = et.SubElement(size, "depth")depth.text = "3"segmented = et.SubElement(root, "segmented")segmented.text = "0"objects = tree_.findall(".//object")anchor = 0for object in objects:try:name_ = object.find("name").textexcept:print(file)print("-----------------------------------------")continuen = ""if name_ == "van" or name_ == "bus" or name_ == "truck":n = "car"else:n = name_object_ = et.SubElement(root, "object")name = et.SubElement(object_, "name")name.text = npose = et.SubElement(object_, "pose")pose.text = "Unspecified"truncated = et.SubElement(object_, "truncated")truncated.text = "0"difficult = et.SubElement(object_, "difficult")difficult.text = "0"bndbox = et.SubElement(object_, "bndbox")xmin = et.SubElement(bndbox, "xmin")xmin.text = object.find(".//xmin").textymin = et.SubElement(bndbox, "ymin")ymin.text = object.find(".//ymin").textxmax = et.SubElement(bndbox, "xmax")xmax.text = object.find(".//xmax").textymax = et.SubElement(bndbox, "ymax")ymax.text = object.find(".//ymax").texttree = et.ElementTree(root)tree.write(file,encoding="utf-8")if __name__ == '__main__':source_dir = "/home/Desktop/labels/Annotations"flip_images(source_dir)

 使用以上代码需要修改原图像和标注文件所在文件夹路径(source_dir),也需要修改类别,上述代码将"van”、“bus”、“truck”修改为“car”,这里可根据实际情况自行修改。亲测可用。 

http://www.lryc.cn/news/141713.html

相关文章:

  • 最新域名和子域名信息收集技术
  • C语言基础之——指针(上)
  • 构建 NodeJS 影院预订微服务并使用 docker 部署(04/4)
  • SpringBootWeb案例 Part3
  • C++中using 用法
  • window下jdk安装及更换jdk版本的一些问题。
  • GPT4模型架构的泄漏与分析
  • GEE/PIE遥感大数据处理与典型案例丨数据整合Reduce、云端数据可视化、数据导入导出及资产管理、机器学习算法等
  • STM32--DMA
  • mongodb和redis的用途
  • 【动手学深度学习】--18.图像增广
  • 数据分析--统计学知识
  • matlab 计算点云协方差矩阵
  • python进阶之图像编程 pillow扩展库
  • TiCDC Canal-JSON 消息接收示例(Java 版)
  • SQLite、MySQL、PostgreSQL3个关系数据库之间的对比
  • 开源容灾备份软件,开源cdp备份软件
  • Java合并区间
  • 前端面试:【代码质量与工程实践】单元测试、集成测试和持续集成
  • 2023/8/17总结
  • REDIS 7 教程 数据类型-进阶篇
  • 图文并茂:Python Tkinter从入门到高级实战全解析
  • npm和yarn的区别?
  • 微服务项目容器编排docker-compose.yml、Dockerfile文件模板、相关配置文件、shell脚本
  • 算法通过村第三关-数组黄金笔记|数组难解
  • 【2023】LeetCode HOT 100——矩阵
  • springboot源码方法
  • 基于java街球社区网站设计与实现
  • 定时产生不同频率方波
  • Java“牵手”天猫商品sku信息API接口数据,天猫API接口申请指南