当前位置: 首页 > news >正文

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

一、功能介绍

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

二、代码

import os
import xml.etree.ElementTree as ET
import globdef 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:# 如果标签名不在字典中,则添加该标签名并将值设为1dict[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文件夹的绝对路径,运行结果如下:

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python爬虫使用实例
  • 人脸操作:从检测到识别的全景指南
  • 精彩回顾 | 风丘科技亮相2024名古屋汽车工程博览会
  • 【C++】STL——list
  • ubuntu使用gParted给sda1分区扩展分区
  • 无字母数字webshell之命令执行
  • 时间序列预测 | CEEMDAN+CNN+Transformer多变量时间序列预测(Python)
  • 【自动化】自动化场景经验
  • MemFire Cloud,前端开发新纪元
  • 代码随想录Day31:56.合并区间、738.单调递增的数字
  • python实现生命游戏
  • ubuntu安装nginx
  • chatgpt和语言学
  • 【鸿蒙基础系列】鸿蒙基础组件
  • C# 中的抽象类和抽象方法
  • 3.7、@ResponseBody 和 @RestController
  • 30秒的PHP代码片段(1)数组 - Array
  • Android开源项目规范总结
  • Consul Config 使用Git做版本控制的实现
  • Django 博客开发教程 16 - 统计文章阅读量
  • Iterator 和 for...of 循环
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JDK 6和JDK 7中的substring()方法
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • linux学习笔记
  • ng6--错误信息小结(持续更新)
  • Puppeteer:浏览器控制器
  • springMvc学习笔记(2)
  • 程序员该如何有效的找工作?
  • 汉诺塔算法
  • 精彩代码 vue.js
  • 前端工程化(Gulp、Webpack)-webpack
  • 前端技术周刊 2019-01-14:客户端存储
  • 让你的分享飞起来——极光推出社会化分享组件
  • 软件开发学习的5大技巧,你知道吗?
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 优化 Vue 项目编译文件大小
  • MyCAT水平分库
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • #if和#ifdef区别
  • #pragam once 和 #ifndef 预编译头
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (二)windows配置JDK环境
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (论文阅读30/100)Convolutional Pose Machines
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (生成器)yield与(迭代器)generator
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net core 外观者设计模式 实现,多种支付选择
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net 微服务 服务保护 自动重试 Polly