Update
This commit is contained in:
@@ -1683,17 +1683,34 @@ class VideoEditor:
|
||||
template_offset = None
|
||||
if self.template_matching_enabled and self.tracking_template is not None:
|
||||
if self.current_display_frame is not None:
|
||||
# Apply motion tracking offset to the frame before template matching
|
||||
# This ensures template matching works on the offset frame
|
||||
offset_frame = self._apply_motion_tracking_offset(self.current_display_frame, base_pos)
|
||||
if offset_frame is not None:
|
||||
result = self.track_template(offset_frame)
|
||||
if result:
|
||||
center_x, center_y, confidence = result
|
||||
print(f"DEBUG: Template match found at ({center_x}, {center_y}) with confidence {confidence:.2f}")
|
||||
# Use only the cropped region for much faster template matching
|
||||
if self.crop_rect:
|
||||
crop_x, crop_y, crop_w, crop_h = self.crop_rect
|
||||
# Extract only the cropped region from raw frame
|
||||
cropped_frame = self.current_display_frame[crop_y:crop_y+crop_h, crop_x:crop_x+crop_w]
|
||||
if cropped_frame is not None and cropped_frame.size > 0:
|
||||
# Apply motion tracking offset to the cropped frame
|
||||
offset_frame = self._apply_motion_tracking_offset(cropped_frame, base_pos)
|
||||
if offset_frame is not None:
|
||||
# Track template in cropped and offset frame (much faster!)
|
||||
result = self.track_template(offset_frame)
|
||||
if result:
|
||||
center_x, center_y, confidence = result
|
||||
print(f"DEBUG: Template match found at ({center_x}, {center_y}) with confidence {confidence:.2f}")
|
||||
|
||||
# Template matching returns coordinates in offset frame space
|
||||
template_offset = (center_x, center_y)
|
||||
# Map from cropped frame coordinates to raw frame coordinates
|
||||
# Add crop offset back
|
||||
raw_x = center_x + crop_x
|
||||
raw_y = center_y + crop_y
|
||||
template_offset = (raw_x, raw_y)
|
||||
else:
|
||||
# No crop - use full frame with offset
|
||||
offset_frame = self._apply_motion_tracking_offset(self.current_display_frame, base_pos)
|
||||
if offset_frame is not None:
|
||||
result = self.track_template(offset_frame)
|
||||
if result:
|
||||
center_x, center_y, confidence = result
|
||||
template_offset = (center_x, center_y)
|
||||
|
||||
# Calculate offset from feature tracking if enabled
|
||||
feature_offset = None
|
||||
@@ -1833,13 +1850,32 @@ class VideoEditor:
|
||||
# Get base position for motion tracking offset
|
||||
base_pos = self._get_manual_tracking_position(frame_number)
|
||||
|
||||
# Apply motion tracking offset to the frame before template matching
|
||||
offset_frame = self._apply_motion_tracking_offset(self.current_display_frame, base_pos)
|
||||
if offset_frame is not None:
|
||||
result = self.track_template(offset_frame)
|
||||
if result:
|
||||
center_x, center_y, confidence = result
|
||||
return (center_x, center_y, confidence)
|
||||
# Use only the cropped region for much faster template matching
|
||||
if self.crop_rect:
|
||||
crop_x, crop_y, crop_w, crop_h = self.crop_rect
|
||||
# Extract only the cropped region from raw frame
|
||||
cropped_frame = self.current_display_frame[crop_y:crop_y+crop_h, crop_x:crop_x+crop_w]
|
||||
if cropped_frame is not None and cropped_frame.size > 0:
|
||||
# Apply motion tracking offset to the cropped frame
|
||||
offset_frame = self._apply_motion_tracking_offset(cropped_frame, base_pos)
|
||||
if offset_frame is not None:
|
||||
# Track template in cropped and offset frame (much faster!)
|
||||
result = self.track_template(offset_frame)
|
||||
if result:
|
||||
center_x, center_y, confidence = result
|
||||
# Map from cropped frame coordinates to raw frame coordinates
|
||||
# Add crop offset back
|
||||
raw_x = center_x + crop_x
|
||||
raw_y = center_y + crop_y
|
||||
return (raw_x, raw_y, confidence)
|
||||
else:
|
||||
# No crop - use full frame with offset
|
||||
offset_frame = self._apply_motion_tracking_offset(self.current_display_frame, base_pos)
|
||||
if offset_frame is not None:
|
||||
result = self.track_template(offset_frame)
|
||||
if result:
|
||||
center_x, center_y, confidence = result
|
||||
return (center_x, center_y, confidence)
|
||||
|
||||
return None
|
||||
|
||||
|
Reference in New Issue
Block a user