【Python快速入门和实践012】Python常用脚本-目标检测之查看数据集标签类别及对应数量

一、功能介绍

这段代码的功能是从指定的目录中读取所有的XML文件,并统计这些文件中特定标签(<object>标签内的<name>标签)的内容和出现次数。

二、代码

python 复制代码
import os
import xml.etree.ElementTree as ET
import glob


def count_num(indir):
    label_list = []

    # 更改当前工作目录到指定的目录
    os.chdir(indir)

    # 获取当前目录下所有的文件名
    annotations = os.listdir('.')

    # 使用glob获取当前目录下所有的XML文件
    annotations = glob.glob('*.xml')

    # 初始化一个空字典来存储各个标签的计数
    dict = {}

    # 遍历所有的XML文件
    for i, file in enumerate(annotations):

        # 打开XML文件
        in_file = open(file, encoding='utf-8')

        # 解析XML文件
        tree = ET.parse(in_file)

        # 获取XML文档的根节点
        root = tree.getroot()

        # 遍历XML文档中的所有<object>元素
        for obj in root.iter('object'):

            # 获取<object>元素内的<name>标签文本
            name = obj.find('name').text

            # 如果标签名已经存在于字典中
            if name in dict.keys():

                # 将该标签名对应的值加一
                dict[name] += 1

                # 如果标签是'face',则打印出文件名
                if name == 'face':
                    print(file)

            else:

                # 如果标签名不在字典中,则添加该标签名并将值设为1
                dict[name] = 1

                # 如果标签是'face',则打印出文件名
                if name == 'face':
                    print(file)

    # 打印所有标签名及对应的数量
    print("各类标签的数量分别为:")
    for key in dict.keys():
        print(key + ': ' + str(dict[key]))
        label_list.append(key)

    # 打印所有不同的标签名称
    print("标签类别如下:")
    print(label_list)


# 主程序入口
if __name__ == '__main__':
    # 设置输入目录
    indir = r'E:\pythonProject\pythonProject\NEU-DET\xmls'

    # 调用函数统计各类标签数目
    count_num(indir)

以东北大学钢材表面缺陷检测数据集为例,设置好xml文件夹的绝对路径,运行结果如下:

相关推荐
SheepMeMe几秒前
蓝桥杯2024省赛PythonB组——日期问题
python·算法·蓝桥杯
genispan7 分钟前
QT/C++ 多线程并发下载实践
开发语言·c++·qt
莓事哒9 分钟前
selenium和pytessarct提取古诗文网的验证码(python爬虫)
爬虫·python·selenium·测试工具·pycharm
-代号952726 分钟前
【JavaScript】十三、事件监听与事件类型
开发语言·javascript·ecmascript
q5673152341 分钟前
使用puppeteer库编写的爬虫程序
爬虫·python·网络协议·http
mosquito_lover11 小时前
Python数据分析与可视化实战
python·数据挖掘·数据分析
写代码的小王吧1 小时前
【Java可执行命令】(十)JAR文件签名工具 jarsigner:通过数字签名及验证保证代码信任与安全,深入解析 Java的 jarsigner命令~
java·开发语言·网络·安全·web安全·网络安全·jar
eqwaak01 小时前
量子计算与AI音乐——解锁无限可能的音色宇宙
人工智能·爬虫·python·自动化·量子计算
SylviaW081 小时前
python-leetcode 63.搜索二维矩阵
python·leetcode·矩阵
小卡皮巴拉1 小时前
【力扣刷题实战】矩阵区域和
开发语言·c++·算法·leetcode·前缀和·矩阵