aboutsummaryrefslogtreecommitdiff
path: root/src/argaze/ArUcoMarkers/ArUcoTracker.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/argaze/ArUcoMarkers/ArUcoTracker.py')
-rw-r--r--src/argaze/ArUcoMarkers/ArUcoTracker.py19
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