最近在网上下载了一些数据集,想看一下图像的标注信息。

Open Dir和Change Save Dir都设置的没问题,发现图片有标注好的xml文件却在labelImg中无法显示bbox,如图所示:

然后我自己标注了一张图片,查看两个xml文件有什么不同,发现有如下不同:用我的labelImg标注产生的xml文件的开头包含对应的“图片名称”和“图片路径”,而我从网上下载的数据集却缺少这两项,以致于图片和xml无法匹配,无法在labelImg中显示标注信息。如下图所示:frame_10692是自己标注的一张图片,可以显示bbox,flv2是网上下载的,不能显示。

我手动给xml加上了缺少的内容之后,就可以显示标注的信息了。

显示出标注信息了!!!

接下来只需要用代码遍历xml文件,加上对应的文字就行了!!!

批量修改xml文件项目的结构如图所示:

xmlWrite.py代码如下:

import os
import xml.etree.ElementTree as ET

folder_path = "box0/"

# 遍历文件夹中的每个xml文件
for filename in os.listdir(folder_path):
    if filename.endswith(".xml"):
        xml_file_path = os.path.join(folder_path, filename)

        # 解析xml文件
        tree = ET.parse(xml_file_path)
        root = tree.getroot()

        # 创建新的元素
        filename_element = ET.Element("filename")
        filename_element.text = f"{os.path.splitext(filename)[0]}.jpg"
        path_element = ET.Element("path")
        path_element.text = f"C:\\Users\\liyi0527\\Desktop\\cesao\\image\\{os.path.splitext(filename)[0]}.jpg"

        # 向根元素中添加新的元素
        root.insert(0, filename_element)
        root.insert(1, path_element)

        # 将修改后的xml写回文件
        tree.write(xml_file_path)

print("Done!")

成功解决!欢迎交流沟通!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐