Skip to content

Commit f329843

Browse files
author
arch
committed
fix clear bad tracking predictions
1 parent 49dd7b7 commit f329843

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

funscript_editor/algorithms/funscriptgenerator.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -445,19 +445,25 @@ def plot_scores(self, name: str, dpi : int = 300) -> None:
445445
figure.savefig(fname=name, dpi=dpi, bbox_inches='tight')
446446

447447

448-
def delete_last_tracking_predictions(self, num :int) -> None:
448+
def delete_last_tracking_predictions(self, bboxes: dict, num :int) -> dict:
449449
""" Delete the latest tracking predictions e.g. to clear bad tracking values
450450
451451
Args:
452+
bboxes (dict): the raw bboxes
452453
num (int): number of frames to remove from predicted boxes
454+
455+
Returns:
456+
dict: the filtered bboxes
453457
"""
454-
if len(self.bboxes['Woman']) <= num:
455-
self.bboxes['Woman'] = []
456-
self.bboxes['Men'] = []
457-
else:
458-
for _ in range(num):
459-
del self.bboxes['Woman'][-1]
460-
if self.params.track_men: del self.bboxes['Men'][-1]
458+
if len(bboxes['Woman'].keys()) > 0:
459+
keys = [k for k in bboxes['Woman'].keys()]
460+
del_keys = [k for k in keys if k > max(keys) - num]
461+
for k in del_keys:
462+
try:
463+
del bboxes['Woman'][k]
464+
if self.params.track_men: del bboxes['Men'][k]
465+
except: pass
466+
return bboxes
461467

462468

463469
def preview_scaling(self, preview_image :np.ndarray, post_scale :float = 1.0) -> np.ndarray:
@@ -701,20 +707,20 @@ def tracking(self) -> str:
701707

702708
if self.was_key_pressed('q') or cv2.waitKey(1) == ord('q'):
703709
status = 'Tracking stopped by user'
704-
self.delete_last_tracking_predictions(int((self.get_average_tracking_fps()+1)*2.1))
710+
bboxes = self.delete_last_tracking_predictions(bboxes, int((self.get_average_tracking_fps()+1)*2.0))
705711
break
706712

707713
(successWoman, bboxWoman) = trackerWoman.result()
708714
if not successWoman:
709715
status = 'Tracker Woman Lost'
710-
self.delete_last_tracking_predictions((self.params.skip_frames+1)*3)
716+
bboxes = self.delete_last_tracking_predictions(bboxes, (self.params.skip_frames+1)*3)
711717
break
712718

713719
if self.params.track_men:
714720
(successMen, bboxMen) = trackerMen.result()
715721
if not successMen:
716722
status = 'Tracking Men Lost'
717-
self.delete_last_tracking_predictions((self.params.skip_frames+1)*3)
723+
bboxes = self.delete_last_tracking_predictions(bboxes, (self.params.skip_frames+1)*3)
718724
break
719725

720726
last_frame = frame

0 commit comments

Comments
 (0)