introduced tracker id
This commit is contained in:
+11
-8
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user