Skip to content

Commit 0326470

Browse files
author
arch
committed
enable online scene detector on new version (#9)
1 parent f7dc8e2 commit 0326470

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

funscript_editor/algorithms/scenedetect.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)