统计json文件中标记框的宽高比分布

代码的详细信息已经在代码中标注,只需要改下路径就行,很简单,易懂

import pandas as pd
import seaborn as sns
import numpy as np
import json
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']    #设置字体为黑体
plt.rcParams['font.family'] = 'sans-serif'     #设置字体样式
plt.rcParams['figure.figsize'] = (10.0, 10.0)  #设置字体大小


#读取数据
ann_json_path = "yourpath/coco_train_val.json"
with open(ann_json_path) as f:
    ann=json.load(f)

    
#创建{1: 'multi_signs', 2: 'window_shielding', 3: 'non_traffic_sign'}
#创建{'multi_signs': 0, 'window_shielding': 0, 'non_traffic_sign': 0}
categorys_dic = dict([(i['id'],i['name']) for i in ann['categories']])
categorys_num = dict([i['name'], 0] for i in ann['categories'])

#统计每个类别的数量
for i in ann['annotations']:
    categorys_num[categorys_dic[i['category_id']]] +=1

#统计bbox的w、h、wh
bbox_w = []
bbox_h = []
bbox_wh = []
for i in ann['annotations']:
    bbox_w.append(round(i['bbox'][2], 2))
    bbox_h.append(round(i['bbox'][3], 2))
    wh = round(i['bbox'][2]/i['bbox'][3],0)
    if(wh < 1):
        wh = round(i['bbox'][3]/i['bbox'][2], 0)
    bbox_wh.append(wh)
    
#统计所有的宽高比
bbox_wh_unique = set(bbox_wh)#set挑选出不重复的元素,即挑选出有多少种比例的anchors
#print(bbox_wh_unique)
bbox_count_unique = [bbox_wh.count(i) for i in bbox_wh_unique]#统计宽高比数量
#print(bbox_count_unique)

#画图
wh_dataframe = pd.DataFrame(bbox_count_unique, index=bbox_wh_unique, columns=['宽高比数量'])
wh_dataframe.plot(kind = 'bar', color="#55aacc" )
plt.show

结果如下
在这里插入图片描述

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值