'Load result file and return a result api object.
:param   resFile (str)     : file name of result file
:return: res (obj)         : result api object'

def loadRes(self, resFile):

    res = COCO()
    res.dataset['images'] = [img for img in self.dataset['images']]
    print 'Loading    and    preparing    results...                    '
    tic = time.time()
    anns = json.load(open(resFile))
    assert (type(anns) == list), 'results    in    not    an    array    of    objects'
    annsImgIds = [ann['image_id'] for ann in anns]
    assert (set(annsImgIds) == (set(annsImgIds) & set(self.getImgIds()))), 'Results    do    not    correspond    to    current    coco    set'
    if ('caption' in anns[0]):
        imgIds = (set([img['id'] for img in res.dataset['images']]) & set([ann['image_id'] for ann in anns]))
        res.dataset['images'] = [img for img in res.dataset['images'] if (img['id'] in imgIds)]
        for (id, ann) in enumerate(anns):
            ann['id'] = (id + 1)
    elif (('bbox' in anns[0]) and (not (anns[0]['bbox'] == []))):
        res.dataset['categories'] = copy.deepcopy(self.dataset['categories'])
        for (id, ann) in enumerate(anns):
            bb = ann['bbox']
            (x1, x2, y1, y2) = [bb[0], (bb[0] + bb[2]), bb[1], (bb[1] + bb[3])]
            if (not ('segmentation' in ann)):
                ann['segmentation'] = [[x1, y1, x1, y2, x2, y2, x2, y1]]
            ann['area'] = (bb[2] * bb[3])
            ann['id'] = (id + 1)
            ann['iscrowd'] = 0
    elif ('segmentation' in anns[0]):
        res.dataset['categories'] = copy.deepcopy(self.dataset['categories'])
        for (id, ann) in enumerate(anns):
            ann['area'] = mask.area([ann['segmentation']])[0]
            if (not ('bbox' in ann)):
                ann['bbox'] = mask.toBbox([ann['segmentation']])[0]
            ann['id'] = (id + 1)
            ann['iscrowd'] = 0
    print ('DONE    (t=%0.2fs)' % (time.time() - tic))
    res.dataset['annotations'] = anns
    res.createIndex()
    return res
