Yaroslav
commited on
fix the flickering
Browse files
app.py
CHANGED
@@ -20,9 +20,9 @@ def increase_fps(input_video_path, target_fps=60):
|
|
20 |
# Расчет коэффициента интерполяции
|
21 |
ratio = target_fps / input_fps
|
22 |
output = cv2.VideoWriter(output_path, codec, target_fps, (width, height))
|
|
|
23 |
ret, prev_frame = cap.read()
|
24 |
|
25 |
-
# Проверка первого кадра
|
26 |
if not ret:
|
27 |
cap.release()
|
28 |
output.release()
|
@@ -30,32 +30,25 @@ def increase_fps(input_video_path, target_fps=60):
|
|
30 |
|
31 |
prev_frame_gray = cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY)
|
32 |
|
33 |
-
|
34 |
ret, next_frame = cap.read()
|
35 |
if not ret:
|
36 |
break
|
37 |
|
38 |
-
# Преобразуем текущий кадр в черно-белый
|
39 |
next_frame_gray = cv2.cvtColor(next_frame, cv2.COLOR_BGR2GRAY)
|
40 |
|
41 |
-
# Убедимся, что размеры кадров совпадают
|
42 |
-
if prev_frame_gray.shape != next_frame_gray.shape:
|
43 |
-
next_frame_gray = cv2.resize(next_frame_gray, (prev_frame_gray.shape[1], prev_frame_gray.shape[0]))
|
44 |
-
|
45 |
# Оптический поток
|
46 |
-
flow = cv2.calcOpticalFlowFarneback(
|
47 |
-
prev_frame_gray, next_frame_gray, None, 0.5, 3, 15, 3, 5, 1.2, 0
|
48 |
-
)
|
49 |
|
50 |
# Генерация промежуточных кадров
|
51 |
for i in range(1, int(ratio)):
|
52 |
alpha = i / ratio
|
53 |
-
intermediate_frame = cv2.addWeighted(
|
54 |
-
|
55 |
-
output.write(intermediate_bgr)
|
56 |
|
57 |
output.write(next_frame)
|
58 |
prev_frame_gray = next_frame_gray
|
|
|
59 |
|
60 |
cap.release()
|
61 |
output.release()
|
|
|
20 |
# Расчет коэффициента интерполяции
|
21 |
ratio = target_fps / input_fps
|
22 |
output = cv2.VideoWriter(output_path, codec, target_fps, (width, height))
|
23 |
+
|
24 |
ret, prev_frame = cap.read()
|
25 |
|
|
|
26 |
if not ret:
|
27 |
cap.release()
|
28 |
output.release()
|
|
|
30 |
|
31 |
prev_frame_gray = cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY)
|
32 |
|
33 |
+
while True:
|
34 |
ret, next_frame = cap.read()
|
35 |
if not ret:
|
36 |
break
|
37 |
|
|
|
38 |
next_frame_gray = cv2.cvtColor(next_frame, cv2.COLOR_BGR2GRAY)
|
39 |
|
|
|
|
|
|
|
|
|
40 |
# Оптический поток
|
41 |
+
flow = cv2.calcOpticalFlowFarneback(prev_frame_gray, next_frame_gray, None, 0.5, 3, 15, 3, 5, 1.2, 0)
|
|
|
|
|
42 |
|
43 |
# Генерация промежуточных кадров
|
44 |
for i in range(1, int(ratio)):
|
45 |
alpha = i / ratio
|
46 |
+
intermediate_frame = cv2.addWeighted(prev_frame, 1 - alpha, next_frame, alpha, 0)
|
47 |
+
output.write(intermediate_frame)
|
|
|
48 |
|
49 |
output.write(next_frame)
|
50 |
prev_frame_gray = next_frame_gray
|
51 |
+
prev_frame = next_frame
|
52 |
|
53 |
cap.release()
|
54 |
output.release()
|