You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python基于xml.etree提取图像标注XML的目标类名与边界框坐标

标注坐标提取的可落地实现

你已经完成XML解析、获取根节点的前置步骤后,可直接按以下逻辑补全提取流程,无需额外嵌套多层循环遍历节点。

核心提取逻辑

借助ElementTree内置的iter()方法可以直接定位文档内所有<object>标签,无需从根节点逐层向下匹配子节点,代码简洁且不容易因节点层级变动报错:

  • 每个<object>节点下,类别名称是直接子节点<name>的文本值
  • 边界框坐标是<object>下<bndbox>子节点内的四个数值节点的文本值,提取后建议直接转为整数/浮点数值类型,避免后续处理受字符串类型限制

场景1:按指定格式逐行输出

直接在你已有的根节点获取逻辑后拼接以下代码,即可生成「类别名, xmin, ymin, xmax, ymax」格式的逐行内容:

# 承接你已写好的root = tree.getroot() 逻辑
output_result = []
for obj in root.iter("object"):
    # 提取类别,去除前后冗余空格
    class_label = obj.find("name").text.strip()
    # 定位边界框节点
    bndbox_node = obj.find("bndbox")
    # 提取四个坐标并转为整数(若标注为浮点值则替换为float)
    x_min = int(bndbox_node.find("xmin").text.strip())
    y_min = int(bndbox_node.find("ymin").text.strip())
    x_max = int(bndbox_node.find("xmax").text.strip())
    y_max = int(bndbox_node.find("ymax").text.strip())
    # 按要求格式拼接
    output_line = f"{class_label}, {x_min}, {y_min}, {x_max}, {y_max}"
    output_result.append(output_line)
    # 如需直接逐行打印,取消下面注释
    # print(output_line)

如果需要兼容不规范的标注文件(比如个别object缺失name或bndbox节点),可在循环内加入简单容错,避免运行时报错中断:

# 可选容错逻辑
if obj.find("name") is None or obj.find("bndbox") is None:
    continue

场景2:转换为pandas DataFrame结构

如果需要结构化存储提取结果,可将每个标注的字段值存入字典列表,再直接转换为DataFrame,无需手动调整列顺序:

import pandas as pd
records = []
for obj in root.iter("object"):
    class_label = obj.find("name").text.strip()
    bndbox_node = obj.find("bndbox")
    x_min = int(bndbox_node.find("xmin").text.strip())
    y_min = int(bndbox_node.find("ymin").text.strip())
    x_max = int(bndbox_node.find("xmax").text.strip())
    y_max = int(bndbox_node.find("ymax").text.strip())
    records.append({
        "category": class_label,
        "xmin": x_min,
        "ymin": y_min,
        "xmax": x_max,
        "ymax": y_max
    })
# 生成结构化表格
bbox_df = pd.DataFrame(records)

常见问题提示

  • 如果遇到类型转换报错,优先检查对应坐标节点的文本值是否包含非数字字符(比如多余的注释、空格),目前代码里加的strip()已经能覆盖大部分这类问题
  • 如果XML文档带命名空间,需要在find()的节点名前加上对应命名空间标识,否则会找不到节点

内容的提问来源于stack exchange,提问作者pkj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.25 10:36:03