提取 VOC 数据集标签类别

目录

简介

效果展示

指定标注文件路径

检查 XML 文件完整性

完整代码


简介

VOC(PASCAL Visual Object Classes)是一个经典的计算机视觉数据集,广泛用于物体检测任务。其标注文件通常采用 XML 格式,包含图像中的物体类别、边界框坐标等信息。本教程将通过一个示例代码,展示如何使用 Python 的 xml.dom.minidom 模块读取 VOC 数据集的 XML 文件,并提取所有唯一的标签类别。

效果展示

指定标注文件路径

annotation_path 是一个字符串,表示 VOC 数据集 XML 标注文件所在的文件夹路径。

annotation_path = r"E:\AIrailway\100_raind\voc_labels_enhance"

检查 XML 文件完整性

for names in annotation_names:
    try:
        xmldom.parse(names)
    except Exception as e:
        print(f"Error in {names}: {e}")

完整代码

import xml.dom.minidom as xmldom
import os

#voc数据集获取所有标签的所有类别数"
annotation_path=r"E:\AIrailway\100_raind\voc_labels_enhance"

annotation_names=[os.path.join(annotation_path,i) for i in os.listdir(annotation_path)]


for names in annotation_names:
    try:
        xmldom.parse(names)
    except Exception as e:
        print(f"Error in {names}: {e}")

labels = list()
for names in annotation_names:
    xmlfilepath = names
    domobj = xmldom.parse(xmlfilepath)
    # 得到元素对象
    elementobj = domobj.documentElement
    #获得子标签
    subElementObj = elementobj.getElementsByTagName("object")
    for s in subElementObj:
        label=s.getElementsByTagName("name")[0].firstChild.data
        #print(label)
        if label not in labels:
            labels.append(label)

label_counts = {}
for names in annotation_names:
    domobj = xmldom.parse(names)
    elementobj = domobj.documentElement
    subElementObj = elementobj.getElementsByTagName("object")
    for s in subElementObj:
        label = s.getElementsByTagName("name")[0].firstChild.data
        label_counts[label] = label_counts.get(label, 0) + 1
print(label_counts)

print(labels)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值