introduced tracker id
This commit is contained in:
+11
-8
@@ -94,7 +94,8 @@ class CornerTrackerParams:
|
|||||||
|
|
||||||
|
|
||||||
class CornerTrackerSettings:
|
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.mask_bb = _mask_bb
|
||||||
self.tracking_bb = _tracking_bb
|
self.tracking_bb = _tracking_bb
|
||||||
self.matching_tpl_bb = []
|
self.matching_tpl_bb = []
|
||||||
@@ -108,7 +109,8 @@ class CornerTrackerSettings:
|
|||||||
|
|
||||||
|
|
||||||
class CornerTracker:
|
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.params = _params
|
||||||
self.color = color
|
self.color = color
|
||||||
self.name = name
|
self.name = name
|
||||||
@@ -182,7 +184,7 @@ class CornerTracker:
|
|||||||
|
|
||||||
def create_tracking(self, _image: np.array, _mask: np.array, tracking_bb: np.array):
|
def create_tracking(self, _image: np.array, _mask: np.array, tracking_bb: np.array):
|
||||||
# Init search area
|
# 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)
|
tracking_mask = image_crop(_mask, tracking_bb)
|
||||||
CornerTracker.mask_apply(tracking_img, tracking_mask)
|
CornerTracker.mask_apply(tracking_img, tracking_mask)
|
||||||
image_processed_local = CornerTracker.image_process(tracking_img)
|
image_processed_local = CornerTracker.image_process(tracking_img)
|
||||||
@@ -227,7 +229,7 @@ class CornerTracker:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def init_reference_frame(self, _image: np.array):
|
def init_reference_frame(self, _image: np.array):
|
||||||
settings = CornerTrackerSettings()
|
settings = CornerTrackerSettings(self.id)
|
||||||
# Draw mask
|
# Draw mask
|
||||||
_mask = CornerTracker.mask_init(_image)
|
_mask = CornerTracker.mask_init(_image)
|
||||||
|
|
||||||
@@ -416,8 +418,8 @@ if __name__ == '__main__':
|
|||||||
ct_params = CornerTrackerParams().from_dict(prj['params'])
|
ct_params = CornerTrackerParams().from_dict(prj['params'])
|
||||||
for tracker_settings in prj['trackers']:
|
for tracker_settings in prj['trackers']:
|
||||||
print(tracker_settings)
|
print(tracker_settings)
|
||||||
ct = CornerTracker(ct_params, colors[tracker_count], name=f"Tracker-{tracker_count}")
|
ct = CornerTracker(tracker_settings['id'], ct_params, colors[tracker_count], name=f"Tracker-{tracker_settings['id']}")
|
||||||
ct.create_from_settings(select_window, CornerTrackerSettings().from_dict(tracker_settings))
|
ct.create_from_settings(select_window, CornerTrackerSettings(tracker_count).from_dict(tracker_settings))
|
||||||
tracker_list.append(ct)
|
tracker_list.append(ct)
|
||||||
tracker_count += 1
|
tracker_count += 1
|
||||||
|
|
||||||
@@ -428,7 +430,7 @@ if __name__ == '__main__':
|
|||||||
k = cv2.waitKey(-1) & 0xff
|
k = cv2.waitKey(-1) & 0xff
|
||||||
while True:
|
while True:
|
||||||
print(f"Add tracker #{tracker_count}")
|
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)
|
settings = ct.init_reference_frame(select_window)
|
||||||
if settings is not None:
|
if settings is not None:
|
||||||
prj['trackers'].append(settings.__dict__)
|
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)
|
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:
|
for ct in tracker_list:
|
||||||
mean_distance = ct.process(image, image_anno)
|
mean_distance = ct.process(image, image_anno)
|
||||||
|
ct.id
|
||||||
if mean_distance is not None:
|
if mean_distance is not None:
|
||||||
scale = np.float32(ct_params.scale)
|
scale = np.float32(ct_params.scale)
|
||||||
scaled_distance = (scale*mean_distance[0], scale*mean_distance[1])
|
scaled_distance = (scale*mean_distance[0], scale*mean_distance[1])
|
||||||
@@ -474,7 +477,7 @@ if __name__ == '__main__':
|
|||||||
result_plot[i].append(scaled_distance)
|
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_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]))
|
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"{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})",
|
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)
|
(25, 25 * (i + 1)), cv2.FONT_HERSHEY_SIMPLEX, 0.5, ct.color, 1)
|
||||||
|
|||||||
Reference in New Issue
Block a user