disabled tracker - just use fixed tracker bounding box -> faster
This commit is contained in:
+17
-20
@@ -15,6 +15,7 @@ TEMPLATE_MATCH_OVERLAP = 0
|
|||||||
|
|
||||||
CONSOLE_DEBUG = False
|
CONSOLE_DEBUG = False
|
||||||
IMAGE_DEBUG = False
|
IMAGE_DEBUG = False
|
||||||
|
DO_TRACKING = False
|
||||||
|
|
||||||
|
|
||||||
class Corner:
|
class Corner:
|
||||||
@@ -99,14 +100,11 @@ class CornerTracker:
|
|||||||
def __init__(self, color=(0, 255, 0), name: str = 'CornerTracker'):
|
def __init__(self, color=(0, 255, 0), name: str = 'CornerTracker'):
|
||||||
self.color = color
|
self.color = color
|
||||||
self.name = name
|
self.name = name
|
||||||
self.tracking_ref_bb = None
|
|
||||||
self.tracking_ref_img = None
|
|
||||||
self.tracking_ref_gray_img = None
|
|
||||||
self.matching_tpl_bb = None
|
self.matching_tpl_bb = None
|
||||||
self.matching_tpl_img = None
|
self.matching_tpl_img = None
|
||||||
self.tracking_bb = None
|
self.tracking_bb = None
|
||||||
self.tracking_img = None
|
self.tracking_img = None
|
||||||
self.tracker = cv2.TrackerKCF.create()
|
self.tracker = None
|
||||||
self.corner_ref = None
|
self.corner_ref = None
|
||||||
self.corner_matcher_list = []
|
self.corner_matcher_list = []
|
||||||
|
|
||||||
@@ -136,23 +134,23 @@ class CornerTracker:
|
|||||||
if bbox_center(bb) == (0, 0):
|
if bbox_center(bb) == (0, 0):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
self.tracking_ref_bb = bb
|
self.tracking_bb = bb
|
||||||
self.tracking_ref_img = image_crop(_image, self.tracking_ref_bb)
|
self.tracking_img = image_crop(_image, self.tracking_bb)
|
||||||
self.tracking_ref_gray_img = cv2.cvtColor(self.tracking_ref_img, cv2.COLOR_BGR2GRAY)
|
tracking_ref_gray_img = cv2.cvtColor(self.tracking_img, cv2.COLOR_BGR2GRAY)
|
||||||
self.corner_matcher_list = []
|
self.corner_matcher_list = []
|
||||||
|
|
||||||
corner_list = []
|
corner_list = []
|
||||||
count = 1
|
count = 1
|
||||||
while True:
|
while True:
|
||||||
print(f"Add Corner {count}")
|
print(f"Add Corner {count}")
|
||||||
bb = cv2.selectROI("Matcher Reference", self.tracking_ref_img, fromCenter=True, showCrosshair=True)
|
bb = cv2.selectROI("Matcher Reference", self.tracking_img, fromCenter=True, showCrosshair=True)
|
||||||
if bbox_center(bb) == (0, 0):
|
if bbox_center(bb) == (0, 0):
|
||||||
break
|
break
|
||||||
|
|
||||||
self.matching_tpl_bb = bb
|
self.matching_tpl_bb = bb
|
||||||
self.matching_tpl_img = image_crop(self.tracking_ref_gray_img.copy(), self.matching_tpl_bb)
|
self.matching_tpl_img = image_crop(tracking_ref_gray_img.copy(), self.matching_tpl_bb)
|
||||||
self.corner_matcher_list.append(Corner(self.matching_tpl_img, self.matching_tpl_bb, name=f"Corner-{count}"))
|
self.corner_matcher_list.append(Corner(self.matching_tpl_img, self.matching_tpl_bb, name=f"Corner-{count}"))
|
||||||
corner_list.append(bbox_center(bbox_add_position(self.matching_tpl_bb, self.tracking_ref_bb)))
|
corner_list.append(bbox_center(bbox_add_position(self.matching_tpl_bb, self.tracking_bb)))
|
||||||
|
|
||||||
print(f"Corner {count} added")
|
print(f"Corner {count} added")
|
||||||
print(f"Press any key to add another corner or ESC to continue")
|
print(f"Press any key to add another corner or ESC to continue")
|
||||||
@@ -166,7 +164,9 @@ class CornerTracker:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
# Initialize tracker with first frame and bounding box
|
# Initialize tracker with first frame and bounding box
|
||||||
self.tracker.init(_image, self.tracking_ref_bb)
|
if DO_TRACKING:
|
||||||
|
self.tracker = cv2.TrackerKCF.create()
|
||||||
|
self.tracker.init(_image, self.tracking_bb)
|
||||||
|
|
||||||
# Refine initial corners and store them as reference
|
# Refine initial corners and store them as reference
|
||||||
self.corner_ref = self._corner_refine(cv2.cvtColor(_image, cv2.COLOR_BGR2GRAY), corners=corner_list)
|
self.corner_ref = self._corner_refine(cv2.cvtColor(_image, cv2.COLOR_BGR2GRAY), corners=corner_list)
|
||||||
@@ -174,18 +174,15 @@ class CornerTracker:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def process(self, _image: np.array, _image_anno: np.array):
|
def process(self, _image: np.array, _image_anno: np.array):
|
||||||
if self.tracker is None:
|
# Update tracker bb
|
||||||
raise Exception(f"{self.name}: Call init_reference_frame() first")
|
if self.tracker is not None:
|
||||||
|
_ok, self.tracking_bb = self.tracker.update(_image)
|
||||||
|
if not _ok:
|
||||||
|
return None
|
||||||
|
|
||||||
# Update tracker
|
tracking_img = image_crop(_image.copy(), self.tracking_bb)
|
||||||
_ok, tracking_bb = self.tracker.update(_image)
|
|
||||||
if not _ok:
|
|
||||||
return None
|
|
||||||
|
|
||||||
tracking_img = image_crop(_image.copy(), tracking_bb)
|
|
||||||
tracking_img = cv2.cvtColor(tracking_img, cv2.COLOR_BGR2GRAY)
|
tracking_img = cv2.cvtColor(tracking_img, cv2.COLOR_BGR2GRAY)
|
||||||
self.tracking_img = cv2.GaussianBlur(tracking_img, (9, 9), 0)
|
self.tracking_img = cv2.GaussianBlur(tracking_img, (9, 9), 0)
|
||||||
self.tracking_bb = tracking_bb
|
|
||||||
|
|
||||||
return self._match(_image, _image_anno)
|
return self._match(_image, _image_anno)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user