diff options
Diffstat (limited to 'src/argaze/ArUcoMarkers/ArUcoTracker.py')
-rw-r--r-- | src/argaze/ArUcoMarkers/ArUcoTracker.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/argaze/ArUcoMarkers/ArUcoTracker.py b/src/argaze/ArUcoMarkers/ArUcoTracker.py index 363a5bb..6a71e86 100644 --- a/src/argaze/ArUcoMarkers/ArUcoTracker.py +++ b/src/argaze/ArUcoMarkers/ArUcoTracker.py @@ -1,6 +1,7 @@ #!/usr/bin/env python import json +from collections import Counter from argaze.ArUcoMarkers import ArUcoMarkersDictionary, ArUcoCamera @@ -74,6 +75,10 @@ class ArUcoTracker(): self.__board_corners = [] self.__board_corners_ids = [] + # define track metrics data + self.__track_count = 0 + self.__tracked_markers = [] + def load_configuration_file(self, configuration_filepath): """Load aruco detection parameters from .json file.""" @@ -108,6 +113,11 @@ class ArUcoTracker(): gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) self.__markers_corners, self.__markers_ids, rejectedPoints = aruco.detectMarkers(gray, self.__aruco_dict.get_markers(), parameters = self.__detector_parameters) + # update track metrics + self.__track_count += 1 + for marker_id in self.get_markers_ids(): + self.__tracked_markers.append(marker_id) + if len(self.__markers_corners) > 0 and estimate_pose: # markers pose estimation @@ -163,6 +173,15 @@ class ArUcoTracker(): cv.drawChessboardCorners(frame, ((self.__board.get_size()[0] - 1 ), (self.__board.get_size()[1] - 1)), self.__board_corners, True) + def reset_track_metrics(self): + """Enable marker tracking metrics.""" + self.__track_count = 0 + self.__tracked_markers = [] + + def get_track_metrics(self): + """Get marker tracking metrics.""" + return self.__track_count, Counter(self.__tracked_markers) + def get_markers_dictionay(self): """Get tracked aruco markers dictionary.""" return self.__aruco_dict |