diff --git a/cv_analysis/utils/postprocessing.py b/cv_analysis/utils/postprocessing.py index ea4c4ee..472700f 100644 --- a/cv_analysis/utils/postprocessing.py +++ b/cv_analysis/utils/postprocessing.py @@ -1,11 +1,11 @@ from collections import namedtuple from functools import partial from itertools import starmap, compress -from typing import Iterable +from typing import Iterable, List from cv_analysis.utils.structures import Rectangle -def remove_overlapping(rectangles: Iterable[Rectangle]) -> list[Rectangle]: +def remove_overlapping(rectangles: Iterable[Rectangle]) -> List[Rectangle]: def overlap(a: Rectangle, rect2: Rectangle) -> float: return a.intersection(rect2) > 0 @@ -16,12 +16,12 @@ def remove_overlapping(rectangles: Iterable[Rectangle]) -> list[Rectangle]: return rectangles -def remove_included(rectangles: Iterable[Rectangle]) -> list[Rectangle]: +def remove_included(rectangles: Iterable[Rectangle]) -> List[Rectangle]: keep = [rect for rect in rectangles if not rect.is_included(rectangles)] return keep -def __remove_isolated_unsorted(rectangles: Iterable[Rectangle]) -> list[Rectangle]: +def __remove_isolated_unsorted(rectangles: Iterable[Rectangle]) -> List[Rectangle]: def is_connected(rect: Rectangle, rectangles: Iterable[Rectangle]): return any(rect.adjacent(rect2) for rect2 in rectangles if not rect == rect2) @@ -29,7 +29,7 @@ def __remove_isolated_unsorted(rectangles: Iterable[Rectangle]) -> list[Rectangl return rectangles -def __remove_isolated_sorted(rectangles: Iterable[Rectangle]) -> list[Rectangle]: +def __remove_isolated_sorted(rectangles: Iterable[Rectangle]) -> List[Rectangle]: def is_connected(left, center, right): return any([left.adjacent(center), center.adjacent(right)]) @@ -42,7 +42,7 @@ def __remove_isolated_sorted(rectangles: Iterable[Rectangle]) -> list[Rectangle] return rectangles -def remove_isolated(rectangles: Iterable[Rectangle], input_unsorted=True) -> list[Rectangle]: +def remove_isolated(rectangles: Iterable[Rectangle], input_unsorted=True) -> List[Rectangle]: return (__remove_isolated_unsorted if input_unsorted else __remove_isolated_sorted)(rectangles)