统计数据中包含某类的影像数和目标数

(一)方法1

import os
import json 
import cv2


folder = './orig-2/test/'
# check_save = './guangming-data-check/' #foler to save checked img
names = ['类别1', '类别2', '类别3' ...]
# imglist = []
# jsonlist = []

labellist = []

for cato in names:
    print(f'---- statisticing {cato}-----')
    obj_num = 0
    img_num = 0

    for jsonf in os.listdir(folder + 'JSON'):

        img_label = []

        jname, ext = os.path.splitext(jsonf)

        if ext == '.json':      

            with open(folder + 'JSON/' + jsonf, 'r') as f:
                data = json.load(f)
                # print(data)

            for shape in data['shapes']:
                label = shape['label']

                if label[:-1] == cato:  #统计某类别目标的个数
                    obj_num += 1


                if label[:-1] not in img_label:  #统计存在某类别目标的影像数
                    img_label.append(label[:-1])

        if cato in img_label: #统计存在某类别目标的影像数
            img_num += 1

        if label[:-1] not in labellist: 
            labellist.append(label[:-1])

    print(f'{cato} obj_num:', obj_num )
    print(f'{cato} img_num:', img_num )

print(labellist)
# print(list(set(imglist).difference(set(jsonlist)))) 

(二)方法二

import os
import json

jsonfolder = './orig-2/val/JSON/'

# 存每类目标
labellist = []
img_label_list = []

for jsonf in os.listdir(jsonfolder):

	temp_list = []

	jsonfile = jsonfolder + jsonf

	with open(jsonfile) as f:
		label_data = json.load(f)

	for shape in label_data['shapes']:

		label = shape['label'][:-1]
		
		if label not in temp_list:
			temp_list.append(label)
			img_label_list.append(label) 

		#存放所有目标的label
		labellist.append(label)
	# for x in temp_list
	f.close()

# 包含每类目标的影像数目
dict_label_img = {}
for key1 in img_label_list:
    dict_label_img[key1] = dict_label_img.get(key1, 0) + 1

print('img num')
print (dict_label_img)

# 每类目标的个数:
dict_label = {}
for key2 in labellist:
    dict_label[key2] = dict_label.get(key2, 0) + 1

#目标个数
print('obj num')
print (dict_label)

# print(structuralglssnum)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值