Darknet yolo输出训练集目标类别个数,并保存结果

首先需要有训练图片以及其对应的darknet格式的label(图片名与label名相同)
在这里插入图片描述

import os
label_path = '/Datadarknet/test/labels'     #label 地址
name = '/darknet/model/name.txt'     #类别txt地址
result_path = '/darknet/test/result'    #存放的result地址,没有则会自动创建

key =[]
value =[]
i = 0
with open(name, "r") as f:
    lines = f.readlines()

#获取类别
for line in lines:
    cat = line.split('\n')[0]
    i += 1
    # category.append(cat)
    key.append(str(i-1))
    value.append(cat)
category = dict(zip(key,value))         #demo:{'0': 'yes', '1': 'no'}

if not os.path.exists(result_path):
    os.makedirs(result_path)

#分类别存个数
for root ,dir ,files in os.walk(label_path):
    for file in files:
        label_ = os.path.join(root,file)
        with open(label_,'r') as f:
            l = f.readlines()
            for k in l:
                lb_class = k.split(' ')[0]         #类别序号 0
                lb_category = category[lb_class]   #类别名称 yes
                path = os.path.join(result_path,lb_category+'.txt')    #生成各个类别的txt
                with open(path,'a') as f2:
                    try:   #防止有的label 为空
                        line_write = file[:-4] + k[1:]   #将每一行写入txt文件,格式为:文件名 中心点x,中心点y,x/图片宽,y/图片高
                        f2.write(line_write)
                    except TypeError:
                        continue
f2.close()
print('转换完成')

for root ,dir ,files in os.walk(result_path):
    for name in files:   #dfhifvuer5.txt
        txt_path = os.path.join(root,name)
        txt = open(txt_path)
        num = len(txt.readlines())
        if num != 0 :
            print(name[:-4],num)   #yes 55
        else:
            continue

运行代码:
在这里插入图片描述

生成后的result结果:
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值