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

统计labelme标注的json文件中各类别的标注数量

import os
import json
from collections import defaultdictdef count_bboxes_by_class(folder_path):"""统计文件夹中所有JSON文件中各类别对应的框数量参数:folder_path: 包含JSON文件的文件夹路径返回:字典,键为类别标签,值为对应的框数量"""# 初始化计数器class_bbox_count = defaultdict(int)# 检查文件夹是否存在if not os.path.exists(folder_path):print(f"错误:文件夹 {folder_path} 不存在")return class_bbox_count# 遍历文件夹中的所有文件for filename in os.listdir(folder_path):if filename.endswith('.json'):file_path = os.path.join(folder_path, filename)try:# 读取JSON文件with open(file_path, 'r', encoding='utf-8') as f:data = json.load(f)# 检查文件中是否包含shapes字段if 'shapes' in data:# 统计每个类别的框数量for shape in data['shapes']:class_label = shape['label']class_bbox_count[class_label] += 1print(f"已处理文件: {filename}")except json.JSONDecodeError:print(f"警告:无法解析JSON文件 {filename}")except Exception as e:print(f"处理文件 {filename} 时发生错误: {str(e)}")return class_bbox_countdef print_statistics(class_bbox_count):"""打印统计结果"""if not class_bbox_count:print("未找到任何类别框统计信息")returnprint("\n类别框数量统计结果:")print("=" * 40)print(f"{'类别标签':<15}{'框数量':<15}")print("-" * 40)for class_label, count in class_bbox_count.items():print(f"{class_label:<15}{count:<15}")total = sum(class_bbox_count.values())print("-" * 40)print(f"{'总计':<15}{total:<15}")if __name__ == "__main__":folder_path = "path/to/jsonFolder"# 统计类别框数量class_bbox_count = count_bboxes_by_class(folder_path)# 打印统计结果print_statistics(class_bbox_count)

其中folder_path是集中存放json的文件夹目录

http://www.lryc.cn/news/578697.html

相关文章:

  • 百度轮岗:任命新CFO,崔珊珊退居业务二线
  • 数据结构:递归:组合数(Combination formula)
  • sqlmap学习ing(2.[第一章 web入门]SQL注入-2(报错,时间,布尔))
  • 【C++】inline的作用
  • 《UE5_C++多人TPS完整教程》学习笔记40 ——《P41 装备(武器)姿势(Equipped Pose)》
  • SQL学习笔记6
  • Linux基本命令篇 —— grep命令
  • python训练day46 通道注意力
  • 【Python】断言(assert)
  • 【1.7 漫画Java核心并发编程】
  • 【Unity实战】UI按钮回调管理:职责分离与持久化策略
  • 基于开源AI智能名片链动2+1模式S2B2C商城小程序的抖音渠道力拓展与多渠道利润增长研究
  • react-别名路径配置
  • Git 运行.sh文件
  • Hadoop、Spark、Flink 三大大数据处理框架的能力与应用场景
  • SSVEP Next:现代化的 SSVEP 可视化 Web 快速实现
  • GPT-1论文阅读:Improving Language Understanding by Generative Pre-Training
  • OSPF虚拟链路术语一览:快速掌握网络路由
  • rocketmq 之 阿里云转本地部署实践总结
  • Rust 是什么
  • GPIO详解:不仅仅是输入输出那么简单
  • RagFlow 源码部署启动指南
  • 【文件读取】open | with | as
  • js filter()
  • 从docker-compose快速入门Docker
  • Linux安装JDK和Maven
  • Day 3:Python模块化、异常处理与包管理实战案例
  • 基于GD32 MCU的IAP差分升级方案
  • Vue基础(19)_Vue内置指令
  • STM32——代码开发顺序