@@ -28,6 +28,7 @@ def __init__(self,
2828 self .start_frame_number = start_frame_number
2929 self .current_frame_number = start_frame_number
3030 self .scenes = [start_frame_number ]
31+ self .stop_next_frame = False
3132
3233
3334 def update (self , frame_img : np .ndarray ) -> None :
@@ -52,8 +53,9 @@ def is_scene_change(self, frame_number: int) -> bool:
5253 self .ignore_counter -= 1
5354 return False
5455
55- if len (list (filter (lambda x : (x - frame_number ) <= 0 and (x - frame_number ) > - 1 * self .frame_skip_faktor , self .scenes ))) > 0 :
56+ if self . stop_next_frame or len (list (filter (lambda x : (x - frame_number ) <= 0 and (x - frame_number ) > - 1 * self .frame_skip_faktor , self .scenes ))) > 0 :
5657 self .logger .info ("Detect scene change" )
58+ self .stop_next_frame = False
5759 self .ignore_counter = self .min_scene_len
5860 return True
5961
@@ -129,18 +131,19 @@ def __init__(self,
129131 super ().__init__ (frame_skip_faktor , fps , start_frame_number )
130132 self .logger .info ("Use Content Detector" )
131133 self .threshold = threshold
132- self .last_hsv = cv2 .split (cv2 .cvtColor (start_frame_img , cv2 .COLOR_BGR2HSV ))
134+ self .last_hsv = [ x for x in cv2 .split (cv2 .cvtColor (start_frame_img , cv2 .COLOR_BGR2HSV ))]
133135
134136
135- def calculate_frame_score (self , curr_hsv : np . ndarray ) -> float :
137+ def calculate_frame_score (self , curr_hsv_in : tuple ) -> float :
136138 """ Calculate the frame score
137139
138140 Args:
139- curr_hsv (np.ndarray): HSV frame data
141+ curr_hsv_in (np.ndarray): HSV frame data
140142
141143 Returns:
142144 float: frame score
143145 """
146+ curr_hsv = [x for x in curr_hsv_in ]
144147 delta_hsv = [0 , 0 , 0 ]
145148 for i in range (3 ):
146149 num_pixels = curr_hsv [i ].shape [0 ] * curr_hsv [i ].shape [1 ]
@@ -164,6 +167,7 @@ def update(self, frame_img: np.ndarray) -> None:
164167 if frame_score >= self .threshold :
165168 if self .current_frame_number - self .scenes [- 1 ] > self .min_scene_len :
166169 self .logger .warning ("Found scene change at frame %d" , self .current_frame_number )
170+ self .stop_next_frame = True
167171 self .scenes .append (self .current_frame_number )
168172
169173
@@ -220,6 +224,7 @@ def update(self, frame_img: np.ndarray) -> None:
220224 elif self .last_fade ['type' ] == 'out' and frame_avg >= self .threshold :
221225 if (self .current_frame_number - self .scenes [- 1 ]) >= self .min_scene_len :
222226 self .logger .warning ("Found scene change at frame %d" , self .current_frame_number )
227+ self .stop_next_frame = True
223228 self .scenes .append (self .current_frame_number )
224229 self .last_fade ['type' ] = 'in'
225230 self .last_fade ['frame' ] = self .current_frame_number
0 commit comments