diff --git a/machine_control_utils/utils.py b/machine_control_utils/utils.py index 8244273..21af858 100644 --- a/machine_control_utils/utils.py +++ b/machine_control_utils/utils.py @@ -114,8 +114,12 @@ def get_intersection(box_a, box_b, threshold=0.25): lb, tb, rb, bb = box_b l, t, r, b = max(la, lb), max(ta, tb), min(ra, rb), min(ba, bb) + human_area = (ra - la + 1) * (ba - ta + 1) box_area = (rb - lb + 1) * (bb - tb + 1) - intersection_area = (r - l + 1) * (b - t + 1) + intersection_area = max(0, (r - l + 1)) * max(0, (b - t + 1)) - intersection_box = intersection_area / box_area + if box_area > human_area: + intersection_box = intersection_area / human_area + else: + intersection_box = intersection_area / box_area return intersection_box > threshold diff --git a/main.py b/main.py index a51b3d4..3463770 100644 --- a/main.py +++ b/main.py @@ -3,7 +3,7 @@ import warnings from dotenv import load_dotenv -load_dotenv() +load_dotenv('config/.env') warnings.filterwarnings("ignore") diff --git a/run.py b/run.py index 781dfcb..1e70e98 100644 --- a/run.py +++ b/run.py @@ -44,7 +44,8 @@ def run_machine_control(model: YoloDetector, img, areas_data: List[Area]): elif len(areas_data[i]) == 3: if datetime.now() - areas_data[i].date[0] > timedelta(minutes=30): areas_data[i].refresh() - areas_data[i].update(img) + else: + areas_data[i].update(img) if not in_area: if len(areas_data[i]) == 1: