Python统计Labelme标注文件信息并绘制散点图
Python统计Labelme标注文件信息并绘制散点图
- 前言
- 前提条件
- 相关介绍
- 实验环境
- Python统计Labelme标注文件信息并绘制散点图
前言
- 本文是个人使用Python处理文件的电子笔记,由于水平有限,难免出现错漏,敬请批评改正。
- 更多精彩内容,可点击进入我的个人主页查看
前提条件
- 熟悉Python
相关介绍
- Python是一种跨平台的计算机程序设计语言。是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。
- Python OS模块是负责程序与操作系统的交互,提供了访问操作系统底层的接口和非常丰富的方法用来处理文件和目录。
实验环境
- Python 3.x (面向对象的高级语言)
Python统计Labelme标注文件信息并绘制散点图
import os
import cv2
import json
import pyecharts.options as opts
from pyecharts.charts import Scatter
from pyecharts.commons.utils import JsCode
from pyecharts.faker import Faker# 图像显示函数
def show(name, img):cv2.namedWindow(name, 0) # 用来创建指定名称的窗口,0表示CV_WINDOW_NORMAL# cv2.resizeWindow(name, img.shape[1], img.shape[0]); # 设置宽高大小为640*480cv2.imshow(name, img)cv2.waitKey(0)cv2.destroyAllWindows()def count_json_label(in_json_path,label_num,width_list,height_list,area_list):with open(in_json_path, "r", encoding='utf-8') as f:# json.load数据到变量json_datajson_data = json.load(f)# 统计标签数for i in json_data['shapes']:if i['label'] in label_num.keys():label_num[i['label']] = label_num[i['label']] + 1else:label_num[i['label']] = 1# 生成存储长和宽数据的列表for i in json_data['shapes']:w = i['points'][1][0] - i['points'][0][0]h = i['points'][1][1] - i['points'][0][1]# print(w,h)width_list.append(abs(w))height_list.append(abs(h))area_list.append(abs(w)*abs(h))def write_info_txt(txt_path,label_num,width_list,height_list,area_list):with open('rect_info.txt','w') as f:f.write('总标注数:'+str(sum(label_num.values()))+'\n')f.write('label_num:'+str(label_num)+ '\n')f.write('min(width_list):'+str(min(width_list))+'\n')f.write('len(width_list):'+str(len(width_list))+'\n')f.write('min(height_list):'+str(min(height_list))+'\n')f.write('len(height_list):'+str(len(height_list))+'\n')f.write('min(area_list):'+str(min(area_list))+'\n')f.write('len(area_list):'+str(len(area_list))+'\n')def draw_scatter(width_list,height_list):x_data = width_listy_data = height_list(Scatter().add_xaxis(xaxis_data=x_data).add_yaxis(series_name="(width,height)",y_axis=y_data,symbol_size=3,label_opts=opts.LabelOpts(is_show=False),).set_series_opts().set_global_opts(xaxis_opts=opts.AxisOpts(name = 'Width',type_="value", splitline_opts=opts.SplitLineOpts(is_show=True)),yaxis_opts=opts.AxisOpts(name = 'Height',type_="value",axistick_opts=opts.AxisTickOpts(is_show=True),splitline_opts=opts.SplitLineOpts(is_show=True),),tooltip_opts=opts.TooltipOpts(formatter=JsCode("function (params) {return ' ( ' +params.value[0] + ' , ' + params.value[1]+ ' )';}")),).render("w_h_scatter_chart.html"))if __name__=="__main__":in_dir_name = 'jsons/' # 图片和json所在文件夹# out_dir_name = 'output/'all_name_list = os.listdir(in_dir_name) # 获取文件夹内所有文件名列表# 获取所有json文件,并修改json_name_list = [i for i in all_name_list if i.endswith('.json')] # 图片路径列表# print(json_name_list)label_num = {}width_list = []height_list = []area_list = []for json_name in json_name_list: # 遍历json文件并修改in_json_path = in_dir_name + json_name# print(in_json_path)count_json_label(in_json_path,label_num,width_list,height_list,area_list)print('总标注数:',sum(label_num.values()))print('label_num:',label_num)# print('width_list:',width_list)print('min(width_list):',min(width_list))print('len(width_list):',len(width_list))# print('height_list:',height_list)print('min(height_list):',min(height_list))print('len(height_list):',len(height_list))# print('area_list:',area_list)print('min(area_list):',min(area_list))print('len(area_list):',len(area_list))# 写入信息到txt文件中
write_info_txt('rect_info.txt',label_num,width_list,height_list,area_list)
# 生成散点图
draw_scatter(width_list,height_list)
总标注数: 3504
label_num: {'1': 2612, '2': 228, '0': 151}
min(width_list): 7.420494699646497
len(width_list): 3504
min(height_list): 9.30232558139528
len(height_list): 3504
min(area_list): 76.04040504938182
len(area_list): 3504

更多精彩内容,可点击进入Python日常小操作专栏或我的个人主页查看
相关文章:
Python统计Labelme标注文件信息并绘制散点图
Python统计Labelme标注文件信息并绘制散点图前言前提条件相关介绍实验环境Python统计Labelme标注文件信息并绘制散点图前言 本文是个人使用Python处理文件的电子笔记,由于水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击…...
远程接入方案 OpenText Exceed TurboX(ETX) 客户案例——ET Innovations
远程接入方案 OpenText Exceed TurboX(ETX) 客户案例——ET Innovations ET Innovations GmbH 助力奥地利各地的医疗保健专业人员提升患者体验 医疗保健信息系统开发商利用 OpenText™ Exceed™ TurboX 将远程访问其软件的稳定性提高了 95% 公司:ET I…...
Django4.1.7通过djongo1.3.6链接mongoDB6.0.4
网上中文版的djongo链接mongoDB基本都是抄袭州的先生大哥的文章。 文章成文比较久,至少是2019年成文的了,有一些情况发生了变化,今天就自己测试的情况做一些记录。 本文成文日期为:2023年3月2日,请注意参考 废话不多说…...
如何使用FindFunc在IDA Pro中寻找包含指定代码模式的函数代码
关于FindFunc FindFunc是一款功能强大的IDA Pro插件,可以帮助广大研究人员轻松查找包含了特定程序集、代码字节模式、特定命名、字符串或符合其他各种约束条件的代码函数。简而言之,FindFunc的主要目的就是在二进制文件中寻找已知函数。 使用规则过滤 …...
【C++】讲的最通透最易懂的关于结构体内存对齐的问题
目录1. 内存对齐规则2. 简单易懂的内存对齐示例2.1 简单结构体2.2 含位域的结构体2.3 空类的大小2.4 嵌套结构体3. 为什么需要内存对齐?4. 类型在不同系统下所占字节数1. 内存对齐规则 第一个成员在与结构体变量偏移量为0的位置处。其他成员变量要对齐到某个数字&a…...
Stochastic Approximation 随机近似方法的详解之(一)
随机近似的定义:它指的是一大类随机迭代算法,用于求根或者优化问题。 Stochastic approximation refers to a broad class of stochastic iterative algorithms solving root finding or optimization problems. temporal-difference algorithms是随机近…...
软件自动化测试工程师面试题集锦
以下是部分面试题目和我的个人回答,回答比较简略,仅供参考。不对之处请指出 1.自我介绍 答:姓名,学历专业,技能,近期工作经历等,可以引导到最擅长的点,比如说代码或者项目 参考&a…...
智合同丨教你做一个懂AI的法律人
作为一名法律人,合同审核工作是日常工作中最基本也是必不可少的一项事务。我们知道,一般在企业,合同审批会涉及到众多部门和职务角色,最关键的一环其实在法务或者律师建议,其他部门给出的审批意见基本上都是基于自己部…...
如何判断自己使用的IP是独享还是共享?
在互联网上,我们常常听到独享IP和共享IP这两个概念。独享IP指的是一个IP地址只被一个用户或一个网站所使用,而共享IP则是多个用户或多个网站共用一个IP地址。那么,如何分辨IP是不是独享呢?接下来,我们将从几个方面来看。在这之前…...
跳石头
题目描述 一年一度的"跳石头"比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳…...
上传gitee教程,Gitee怎么上传代码到仓库
目录 第一步:配置git的用户名和邮箱 第二步:上传到远程仓库 第三步:将仓库的master分支拉取过来和本地的当前分支进行合并 第四步:将修改的所有代码添加到暂存区 第五步:将缓存区内容添加到本地仓库(…...
netstat命令详解
1、下载netstat命令对应的软件包 yum install net-tools -y2、netsta命令介绍 [rootvm01 ~]# man netstatNETSTAT(8) Linux System Administrators Manual NETSTAT(8)NAMEnetstat - Print network connections, routing t…...
数据库三范式
文章目录数据库三范式1. 第一范式(1NF)2. 第二范式(2NF)3. 第三范式(3NF)数据库三范式 第一范式:有主键,具有原子性,字段不可分割第二范式:完全依赖…...
K8S 1.20 弃用 Docker 评估之 Docker 和 OCI 镜像格式的差别
背景 2020 年 12 月初,Kubernetes 在其最新的 Changelog 中宣布,自 Kubernetes 1.20 之后将弃用 Docker 作为容器运行时。 弃用 Docker 带来的,可能是一系列的改变,包括不限于: 容器镜像构建工具容器 CLI容器镜像仓…...
Vue2和Vue3响应式的区别
数据响应式是什么? 所谓 数据响应式 就是建立 响应式数据 与 依赖(调用了响应式数据的操作)之间的关系,当响应式数据发生变化时,可以通知那些使用了这些响应式数据的依赖操作进行相关更新操作,可以是DOM…...
模型实战(6)之Alex实现图像分类:模型原理+训练+预测(详细教程!)
Alex实现图像分类:模型原理+训练+预测 图像分类或者检索任务在浏览器中的搜索操作、爬虫搜图中应用较广,本文主要通过Alex模型实现猫狗分类,并且将可以复用的开源模型在文章中给出!!!数据集可以由此下载:Data本文将从以下内容做出讲述: 1.模型简介及环境搭建2.数据集准…...
【大数据】最全的大数据Hadoop|Yarn|Spark|Flink|Hive技术书籍分享/下载链接,持续更新中...
这里写目录标题Hadoop大数据处理Hadoop技术内幕:深入解析YARN架构设计与实现原理Hadoop 技术内幕:深入解析Hadoop Common 和HDFS 架构设计与实现原理Spark SQL内核剖析Hadoop 应用架构深度剖析Hadoop HDFSHadoop实战Hive编程指南Hadoop大数据处理 本书以…...
RIG Exploit Kit 仍然通过 IE 感染企业用户
RIG Exploit Kit 正处于最成功的时期,每天尝试大约 2000 次入侵并在大约 30% 的案例中成功,这是该服务长期运行历史中的最高比率。 通过利用相对较旧的 Internet Explorer 漏洞,RIG EK 已被发现分发各种恶意软件系列,包括 Dridex…...
GIS在地质灾害危险性评估与灾后重建中的实践技术应用及python机器学习灾害易发性评价模型建立与优化进阶
地质灾害是指全球地壳自然地质演化过程中,由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下,地质灾害在世界范围内频繁发生。我国除滑坡灾害外,还包括崩塌、泥石流、地面沉…...
SQL SERVER中SCHEMA的詳解
SQL SERVER中SCHEMA的講解1. Introduction1.1 優勢1.2 內置schema2. Create Schema2.1 Parameters2.2 Sql3.Awakening1. Introduction 1.1 優勢 数据库模式为我们提供了在数据库中创建逻辑对象组的灵活性。如果多个团队使用同一个数据库,我们可以设计各种模式来分組…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
