写了一个读取数据集中小中大对象个数的脚本

本文介绍了如何编写一个Python脚本,通过计算目标检测数据集中每个标注的像素面积,对目标进行大小分类(小、中、大),并统计各类别的数量,以展示数据集中各类目标的比例。
摘要由CSDN通过智能技术生成

因为论文里面关于数据集介绍的部分想要放一下数据集关于大中小三类目标的比例,所以写了个脚本来计算,需要的自取:

import json

def calculate_area(bbox):
    # 计算bbox的像素面积
    width = bbox[2]
    height = bbox[3]
    area = width * height
    return area

def categorize_object(size):
    # 根据像素面积判断目标大小
    if size < 32*32:
        return "小"
    elif size < 96*96:
        return "中"
    else:
        return "大"

def count_object_sizes(data):
    small_count = 0
    medium_count = 0
    large_count = 0
    i = 1
    d_number = 0
    a = 0
    for annotation in data['annotations']:
        print("当前是图片的是",annotation["image_id"])
        bbox = annotation['bbox']
        area = calculate_area(bbox)
        size_category = categorize_object(area)
        sc = small_count
        mc = medium_count
        lc = large_count
        # 根据目标大小类别进行统计
        if size_category == "小":
            small_count += 1
        elif size_category == "中":
            medium_count += 1
        else:
            large_count += 1
        print("第",i,"个标注信息",small_count-sc,"个小目标",medium_count-mc,"个中等目标",large_count-lc,"个大目标")


    return small_count, medium_count, large_count

def main():
    # 读取目标检测数据集中的Annotation.json文件
    with open('D:\datasets\small-object-detection-datasets\Solar_small/all_annotations.json', 'r') as file:
    # with open('D:\datasets\small-object-detection-datasets\AL_1103_2/ann/annotations.json', 'r') as file:
        data = json.load(file)
    # 统计不同大小目标的数量
    small_count, medium_count, large_count = count_object_sizes(data)
    # 打印结果
    print("小目标数量:", small_count)
    print("中目标数量:", medium_count)
    print("大目标数量:", large_count)

if __name__ == "__main__":
    main()

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值