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

news2024/12/22 17:03:01

一、功能介绍

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

二、代码

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文件夹的绝对路径,运行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAK-TC277TP-64F200N DC:32位RAM微控制器、常用于消费者应用

描述&#xff1a; SAK-TC277TP-64F200N DC属于第一代Aurix TC27xT产品。其创新多核心架构基于多达三个独立32位TriCore CPU&#xff0c;专为满足极高的安全标准&#xff0c;同时大幅提高性能而设计。TC27xT系列产品配备200 MHz TriCore、5V 或3.3V 单电压供电和强大的通用定时器…

【Linux】中的软件安装:深入探索RPM、SRPM与YUM

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、Linux的起源与发展 2、RPM、SRPM与YUM的简要介…

【Redis】数据类型详解及其应用场景

目录 Redis 常⻅数据类型预备知识基本全局命令小结 数据结构和内部编码单线程架构引出单线程模型为什么单线程还能这么快 Redis 常⻅数据类型 Redis 提供了 5 种数据结构&#xff0c;理解每种数据结构的特点对于 Redis 开发运维⾮常重要&#xff0c;同时掌握每种数据结构的常⻅…

【大数据】智慧园区大数据云平台整体建设方案(Word原件)

第一章 项目建设背景及现状 第二章 园区创新发展趋势 第三章 工业园区大数据存在的问题 第四章 智慧工业园区大数据建设目的 第五章 智慧园区总体构架 第六章 系统核心组件 第七章 智慧工业园区大数据平台规划设计 获取方式&#xff1a;本文末个人名片直接获取。 软件资料清单列…

springboot使用aop或Jackson进行数据脱敏

1.aop 启动类加EnableAspectJAutoProxy 自定义注解&#xff0c;在实体类中使用表示被脱敏字段 建立aop切面类 可能这里gpt会建议你用Pointcut("execution(public * com.xx.aop..*.get*(..))")这种方式拦截&#xff0c;这种我试了&#xff0c;拦截不住。猜测在mvc返…

灵办AI免费ChatGPT4人工智能浏览器插件快速便捷(多功能)

灵办AI就是您所需的最佳助手&#xff01;我们为您带来了一款多功能AI工具&#xff0c;不仅能为您提供精准翻译&#xff0c;还能满足您的对话需求、智能续写、AI搜索、文档阅读、代码生成与修正等多种需求。灵办 AI&#xff0c;真正让工作和学习变得轻松高效&#xff01; 推荐使…

Android高版本抓包总结

方案1 CharlesVirtualXposedJustTrustMe 推荐使用三星手机此方案 VirtualXposed下载链接&#xff1a;https://github.com/android-hacker/VirtualXposed/releases JustTrustMe下载链接&#xff1a;https://github.com/Fuzion24/JustTrustMe/releases/ 下载完成后使用adb命令…

我的吃鸡日志 中2 从菜鸟到专家

hey&#xff0c;我又来啦&#xff01; 我的吃鸡日志中1之复仇计划见这个。 &#xff08;游戏入口&#xff1a;和平精英38.0 快乐星空&#xff09; 苦学两年半。。。。。。 hey hey hey&#xff0c;这次我必须赢&#xff01; 打开游戏ing。。。。。。 作战ing。。。。 先在…

43-设计规则:铺铜规则

1、铺铜规则设置 铺铜规则[plane]&#xff1a; PowerPlane Connect Style[负片层连接方式]: PlaneConnect&#xff1a;Direct Connect/ 高级设置->过孔改成完全连接 Power Plane Clearance[负片层间距设置]: PlaneClearance&#xff1a; 8mil Polygon Connect Style[正片层…

电动汽车和混动汽车DC-DC转换器的创新设计与测试方法

汽车 DC-DC 转换器市场规模将达到187亿美元&#xff0c;年复合增长率为10%。 DC-DC 转换器是汽车的重要组成部分&#xff0c;它可以通过电压转换为各种车载系统供电&#xff0c;例如日益复杂的车载信息娱乐系统、使用驾驶辅助系统&#xff08;ADAS&#xff09;实现的增强安全功…

VMware虚拟机H群晖7.2懒人包

目录 0. 准备 1. 下载 2. 解压 3. 导入VMware 4.开机 5.查找设备 6.登录初始化 随着DSM系统的升级,群辉NAS很多组件变哈很大,有的已经放弃不再支持,有的与其它功能合并,甚至新开发的组件仅仅支持DSM7以上。为了体验新的组件,因此有必要再安装依噶DSM7.x以上的群辉,…

领域自适应

领域自适应 迁移学习的核心思想在于&#xff0c;一个任务上训练得到的模型所包含的知识可以部分或全部地转移到另一个任务上。这种知识转移可以是网络参数、特征表示、数据间的关系等。通过迁移学习&#xff0c;我们可以利用已有的知识和经验来加速新任务的学习过程&#xff0…

【项目】多设计模式下的同步异步日志系统(二)

继上文对日志系统的介绍&#xff0c;并且实现了日志等级、日志消息的定义、以及格式化消息等。由这三个模块就能完整的输出一条消息。但是考虑到日志消息不可能全部都通过显示器展示。本项目针对落地方式&#xff0c;也进行多种编写&#xff0c;以供使用。 消息落地类(简单工厂…

打包时未添加camera模块,请参考https://ask.dcloud.net.cn/arss/1ooticle/283

今天在app打包使用的时候突然发现app在拍照上传照片的时候遇到这个问题 遇到这种情况通常是因为app打包的时候manifestjson文件中App模块配置中的Camera&Gallery配置没有打开&#xff0c;点击相应选项勾选即可 然后再上传打包就好了! 哈哈哈好久没写博客了最近太忙了&…

zigbee笔记:十三、议栈单播通信理论相关概念原理

一、端点&#xff08;Endpoint&#xff09; 1、端点基础知识 &#xff08;1&#xff09;、它是一个字节编号的&#xff08;端点编号是0-255&#xff09;&#xff0c;数据接收和发送的基本单元&#xff0c;在模块通信的时候&#xff0c;发送模块必须指定收发双方模块的网络地址和…

GNOME 如何关闭显示输出 ? (wayland / mutter / KMS / DRI) (源代码阅读)

GNOME 设置里面有这样一个功能: 鼠标/键盘无操作几分钟之后, 自动关闭显示输出, 具体表现为显示器黑屏, 进入休眠模式. 按一下鼠标/键盘, 恢复显示. 这是一个很常见的功能, 但是需要等待一段时间. 于是窝就想, 可不可以用一种简单的方式, 比如 执行一条命令, 随时随地直接进入这…

routine.hpp路由匹配模块

一.路由匹配模块介绍 路由匹配模块可以验证路由键&#xff08;routing key&#xff09;和绑定键&#xff08;binding key&#xff09;的合法性&#xff0c;并根据不同的交换机类型&#xff08;如Direct、Fanout和Topic&#xff09;进行消息的路由匹配。 二.Routine类的实现 设…

从〇 搭建PO模式的Web UI自动化测试框架

Page Object模式简介 核心思想 将页面元素和操作行为封装在独立的类中&#xff0c;形成页面对象&#xff08;Page Object&#xff09;。每个页面对象代表应用程序中的一个特定页面或组件。 优点&#xff1a; 代码复用性高 页面对象可以在多个测试用例中复用。 易于维护 …

10 个最佳 Java NLP 库和工具

发现用于高级自然语言处理的最佳 Java NLP 库。通过文本分析、情感分析等增强您的应用程序。 Java 已成为一种功能强大且用途广泛的编程语言&#xff0c;广泛用于开发跨领域的各种应用程序。其丰富的库和工具生态系统使其成为各种任务的理想选择&#xff0c;包括自然语言处理 (…

NVDLA专题1:NVDLA框架介绍

NVDLA概述 深度学习的计算部分主要可以分为4部分&#xff1a;卷积、激活单元&#xff08;神经元&#xff09;、池化和归一化。由于每个运算模块都有比较独特的共享特征&#xff0c;因此非常适合给每个模块设计一个对应的特殊硬件实现&#xff1a;内存访问模式容易预测并且很容…