Get ann ids that satisfy given filter conditions. default skips that filter :param imgIds (int array) : get anns for given imgs catIds (int array) : get anns for given cats areaRng (float array) : get anns for given area range (e.g. [0 inf])
(self, imgIds=[], catIds=[], areaRng=[], iscrowd=None)
| 311 | return [self.anns[ids]] |
| 312 | |
| 313 | def getAnnIds(self, imgIds=[], catIds=[], areaRng=[], iscrowd=None): |
| 314 | """ |
| 315 | Get ann ids that satisfy given filter conditions. default skips that filter |
| 316 | :param imgIds (int array) : get anns for given imgs |
| 317 | catIds (int array) : get anns for given cats |
| 318 | areaRng (float array) : get anns for given area range (e.g. [0 inf]) |
| 319 | iscrowd (boolean) : get anns for given crowd label (False or True) |
| 320 | :return: ids (int array) : integer array of ann ids |
| 321 | """ |
| 322 | imgIds = imgIds if _isArrayLike(imgIds) else [imgIds] |
| 323 | catIds = catIds if _isArrayLike(catIds) else [catIds] |
| 324 | |
| 325 | if len(imgIds) == len(catIds) == len(areaRng) == 0: |
| 326 | anns = self.dataset['annotations'] |
| 327 | else: |
| 328 | if not len(imgIds) == 0: |
| 329 | lists = [self.imgToAnns[imgId] for imgId in imgIds if imgId in self.imgToAnns] |
| 330 | # print(len(lists), "lists") |
| 331 | # print(lists) |
| 332 | anns = list(itertools.chain.from_iterable(lists)) |
| 333 | else: |
| 334 | anns = self.dataset['annotations'] |
| 335 | anns = anns if len(areaRng) == 0 else [ann for ann in anns if ann['area'] > areaRng[0] and ann['area'] < areaRng[1]] |
| 336 | if not iscrowd == None: |
| 337 | ids = [int(ann['id']) for ann in anns if ann['iscrowd'] == iscrowd] |
| 338 | else: |
| 339 | # for ann in anns: |
| 340 | # print("a", ann) |
| 341 | ids = [int(ann['id']) for ann in anns] |
| 342 | return ids |
no test coverage detected