(一)方法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)