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

使用Python+xml+shutil修改目标检测图片和对应xml标注文件

使用Python+xml+shutil修改目标检测图片文件名和对应xml标注文件:

import os
import glob
import xml.etree.ElementTree as et
import shutildef change_labels(source_dir):name_id = 18001file_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").textfilename.text = "%06d.jpg" % name_idpath = et.SubElement(root, "path")path.text = "/ADAS/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_ == "pedestrian" or name_ == "rider":n = "person"elif name_ == "other vehicle":n = "truck"elif name_ in ["motorcycle", "bicycle","motor","bike"] :n = "others"elif name_ in ["car","minibus","bus","truck","others","person","leftline","rightline"] :n = name_else:continueobject_ = 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").textfile_label = file.replace(tree_.find(".//filename").text.replace(".jpg",".xml"), "%06d.xml" % name_id).replace("Annotations","new-Annotations")# print("------",file,tree_.find(".//filename").text.replace(".jpg",".xml"),"%06d.xml" % name_id)tree = et.ElementTree(root)tree.write(file_label, encoding="utf-8")if tree_.find(".//filename").text.split(".")[-1] == "jpg":shutil.copy(file.replace("Annotations","JPEGImages").replace(".xml",".jpg"), file.replace("Annotations","new-JPEGImages").replace(tree_.find(".//filename").text.replace(".jpg",".xml"), "%06d.jpg" % name_id))print(file.replace("Annotations","new-JPEGImages").replace(tree_.find(".//filename").text.replace(".jpg",".xml"), "%06d.jpg" % name_id), tree_.find(".//filename").text)elif tree_.find(".//filename").text.split(".")[-1] == "png":shutil.copy(file.replace("Annotations", "JPEGImages").replace(".xml", ".png"),file.replace("Annotations", "new-JPEGImages").replace(tree_.find(".//filename").text.replace(".png",".xml"),"%06d.png" % name_id))name_id = name_id + 1if __name__ == '__main__':source_dir = "Q:\\DATAS\\nighttime-5000\\Annotations"change_labels(source_dir)

代码解读:

1、原始图片文件目录:JPEGImages

2、原始XML标注文件目录:Annotations

3、新生成的图片文件目录:new-JPEGImages

4、新生成的XML标注文件目录:new-Annotations

相关文章:

  • Python 导出 PDF(ReportLab )
  • 【算法】椭圆曲线签名(ECDSA)
  • 数据库性能优化(sql优化)_分布式优化思路01_yxy
  • Spring AI 发布了它的 1.0.0 版本的第七个里程碑(M7)
  • jmeter中文使用手册
  • 能源智能管控:开启工厂节能增效
  • MCP(Model Context Protocol)技术白皮书与项目集成指南
  • T101D加固平板电脑:无人机地面站的高效智能控制核心
  • MariaDB MaxScale 的用途与实现细节
  • 如何成为一名嵌入式软件工程师?
  • 【C语言】--- 预处理详解
  • spring-boot-devtools如何使用有哪些功能?
  • 【vscode】vscode链接关联github/gitlab
  • BUUCTF-Web(1-20)
  • 记录鸿蒙应用上架应用未配置图标的前景图和后景图标准要求尺寸1024px*1024px和标准要求尺寸1024px*1024px
  • VSCode Continue 扩展踩坑记录
  • [Java实战经验]链式编程与Builder模式
  • MySQL索引和事务
  • Filter、Interceptor、Spring AOP 的执行顺序
  • 深入解析Linux软件包管理:apt/yum源配置与Vim编辑器高效使用指南
  • 溢价26.3%!保利置业42.4亿元竞得上海杨浦宅地,楼板价80199元/平方米
  • 欧洲承诺投资6亿欧元吸引外国科学家
  • 证券时报头版:巴菲特留给投资界的珍贵启示
  • 玉渊谭天丨是自保还是自残?八个恶果透视美国征收100%电影关税
  • 特朗普要征100%关税,好莱坞这批境外摄制新片能躲过吗?
  • 局势紧张之际,伊朗外长下周访问巴基斯坦和印度