introduced tracker id

This commit is contained in:
2024-07-19 14:00:31 +02:00
parent f118626ee7
commit 830b858265
+11 -8
View File
@@ -94,7 +94,8 @@ class CornerTrackerParams:
class CornerTrackerSettings:
def __init__(self, _mask_bb=None, _tracking_bb=None):
def __init__(self, _id: int, _mask_bb=None, _tracking_bb=None):
self.id = _id
self.mask_bb = _mask_bb
self.tracking_bb = _tracking_bb
self.matching_tpl_bb = []
@@ -108,7 +109,8 @@ class CornerTrackerSettings:
class CornerTracker:
def __init__(self, _params: CornerTrackerParams, color=(0, 255, 0), name: str = 'CornerTracker'):
def __init__(self, _id: int, _params: CornerTrackerParams, color=(0, 255, 0), name: str = 'CornerTracker'):
self.id = _id
self.params = _params
self.color = color
self.name = name
@@ -182,7 +184,7 @@ class CornerTracker:
def create_tracking(self, _image: np.array, _mask: np.array, tracking_bb: np.array):
# Init search area
tracking_img = image_crop(_image, tracking_bb)
tracking_img = image_crop(_image.copy(), tracking_bb)
tracking_mask = image_crop(_mask, tracking_bb)
CornerTracker.mask_apply(tracking_img, tracking_mask)
image_processed_local = CornerTracker.image_process(tracking_img)
@@ -227,7 +229,7 @@ class CornerTracker:
return True
def init_reference_frame(self, _image: np.array):
settings = CornerTrackerSettings()
settings = CornerTrackerSettings(self.id)
# Draw mask
_mask = CornerTracker.mask_init(_image)
@@ -416,8 +418,8 @@ if __name__ == '__main__':
ct_params = CornerTrackerParams().from_dict(prj['params'])
for tracker_settings in prj['trackers']:
print(tracker_settings)
ct = CornerTracker(ct_params, colors[tracker_count], name=f"Tracker-{tracker_count}")
ct.create_from_settings(select_window, CornerTrackerSettings().from_dict(tracker_settings))
ct = CornerTracker(tracker_settings['id'], ct_params, colors[tracker_count], name=f"Tracker-{tracker_settings['id']}")
ct.create_from_settings(select_window, CornerTrackerSettings(tracker_count).from_dict(tracker_settings))
tracker_list.append(ct)
tracker_count += 1
@@ -428,7 +430,7 @@ if __name__ == '__main__':
k = cv2.waitKey(-1) & 0xff
while True:
print(f"Add tracker #{tracker_count}")
ct = CornerTracker(ct_params, colors[tracker_count], name=f"Tracker-{tracker_count}")
ct = CornerTracker(tracker_count, ct_params, colors[tracker_count], name=f"Tracker-{tracker_count}")
settings = ct.init_reference_frame(select_window)
if settings is not None:
prj['trackers'].append(settings.__dict__)
@@ -465,6 +467,7 @@ if __name__ == '__main__':
cv2.rectangle(image_anno, (25, 0), (int(image_anno.shape[1]), 25*(1+len(tracker_list))), (0, 0, 0), -1)
for ct in tracker_list:
mean_distance = ct.process(image, image_anno)
ct.id
if mean_distance is not None:
scale = np.float32(ct_params.scale)
scaled_distance = (scale*mean_distance[0], scale*mean_distance[1])
@@ -474,7 +477,7 @@ if __name__ == '__main__':
result_plot[i].append(scaled_distance)
dist_min[i] = (min(scaled_distance[0], dist_min[i][0]), min(scaled_distance[1], dist_min[i][1]))
dist_max[i] = (max(scaled_distance[0], dist_max[i][0]), max(scaled_distance[1], dist_max[i][1]))
cv2.putText(image_anno, f"Distance [{i}] : ({scaled_distance[0]:+05.2f}, "
cv2.putText(image_anno, f"Distance [{ct.id}] : ({scaled_distance[0]:+05.2f}, "
f"{scaled_distance[1]:+05.2f}), Min: ({dist_min[i][0]:+05.2f}, {dist_min[i][1]:+05.2f}),"
f" Max: ({dist_max[i][0]:+05.2f}, {dist_max[i][1]:+05.2f})",
(25, 25 * (i + 1)), cv2.FONT_HERSHEY_SIMPLEX, 0.5, ct.color, 1)