11""" Top level process to generate the funscript actions by tracking selected features in the video """
22
3+ from os import read
34import cv2
45import copy
56import time
@@ -383,11 +384,11 @@ def get_target_name(self, person=0) -> str:
383384
384385
385386
386- def init_trackers (self , ffmpeg_stream : FFmpegStream ) -> tuple :
387+ def init_trackers (self , first_frame : np . array ) -> tuple :
387388 """ Initialize the trackers
388389
389390 Args:
390- ffmpeg_stream (FFmpegStream ): The ffmpeg stream
391+ first_frame (np.array ): first frame to init the trackers
391392
392393 Returns:
393394 tuple: (first_frame, bboxes, tracking_areas_woman, tracking_areas_men, trackers_woman, trackers_men)
@@ -402,7 +403,6 @@ def init_trackers(self, ffmpeg_stream: FFmpegStream) -> tuple:
402403 trackers_woman = [None for _ in range (self .params .number_of_trackers )]
403404 trackers_men = [None for _ in range (self .params .number_of_trackers )]
404405
405- first_frame = ffmpeg_stream .read ()
406406 preview_frame = first_frame
407407 for tracker_number in range (self .params .number_of_trackers ):
408408 bbox_woman = self .ui .bbox_selector (
@@ -521,7 +521,12 @@ def tracking(self) -> str:
521521 start_frame = self .params .start_frame
522522 )
523523
524- (first_frame , bboxes , tracking_areas_woman , tracking_areas_men , trackers_woman , trackers_men ) = self .init_trackers (video )
524+ first_frame = video .read ()
525+
526+ if first_frame is None :
527+ return "ffmpeg could not extract video frame"
528+
529+ (first_frame , bboxes , tracking_areas_woman , tracking_areas_men , trackers_woman , trackers_men ) = self .init_trackers (first_frame )
525530
526531 if self .params .max_playback_fps > (self .params .skip_frames + 1 ):
527532 cycle_time_in_ms = (float (1000 ) / float (self .params .max_playback_fps )) * (self .params .skip_frames + 1 )
0 commit comments