1 coco数据集json转成基于每个图像的
from __future__ import print_function
import skimage.io as io
import json
from pycocotools.coco import COCO
json_file = 'C:/Users/DELL/Desktop/annotations/instances_val2017.json'
data = json.load(open(json_file, 'r'))
data_temp = {}
data_temp['info'] = data['info']
data_temp['licenses'] = data['licenses']
#print(len(data['images']))
for i in range(len(data['images'])):
data_temp['images'] = [data['images'][i]]
data_temp['categories'] = data['categories']
annotation = []
imgID = data_temp['images'][0]['id']
coco = COCO(json_file)
img = coco.loadImgs([imgID])
# load and display image
I = io.imread('C:/Users/DELL/Desktop/val2017/%s' % img[0]['file_name'])
for ann in data['annotations']:
if ann['image_id'] == imgID:
annotation.append(ann)
data_temp['annotations'] = annotation
# 保存到新的json
json.dump(data_temp, open('C:/Users/DELL/Desktop/val2017json/{}.json'.format(str(img[0]['file_name']).split('.')[0]),'w'), indent=4)
2 可视化处理后的一个文件
from __future__ import print_function
import matplotlib.pyplot as plt
from pycocotools.coco import COCO
import skimage.io as io
annFile = 'C:/Users/DELL/Desktop/val2017json/000000022371.json' # json文件路径
coco = COCO(annFile)
cats = coco.loadCats(coco.getCatIds())
nms = [cat['name'] for cat in cats]
nms = set([cat['supercategory'] for cat in cats])
imgIds = coco.getImgIds()
img = coco.loadImgs(imgIds[0])[0]
dataType = 'C:/Users/DELL/Desktop/val2017'
I = io.imread('%s/%s' % (dataType, img['file_name']))
catIds = []
for ann in coco.dataset['annotations']:
if ann['image_id'] == imgIds[0]:
catIds.append(ann['category_id'])
plt.imshow(I);
plt.axis('off')
annIds = coco.getAnnIds(imgIds=img['id'], catIds=catIds, iscrowd=None)
anns = coco.loadAnns(annIds)
coco.showAnns(anns)
plt.show()



