Yaroslav
commited on
fix2
Browse filesyooo cool
app.py
CHANGED
@@ -20,29 +20,42 @@ 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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
prev_frame_gray = cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY)
|
25 |
|
26 |
for _ in range(frame_count - 1):
|
27 |
ret, next_frame = cap.read()
|
28 |
if not ret:
|
29 |
break
|
|
|
|
|
30 |
next_frame_gray = cv2.cvtColor(next_frame, cv2.COLOR_BGR2GRAY)
|
31 |
|
|
|
|
|
|
|
|
|
32 |
# Оптический поток
|
33 |
flow = cv2.calcOpticalFlowFarneback(
|
34 |
-
|
35 |
)
|
36 |
|
37 |
# Генерация промежуточных кадров
|
38 |
for i in range(1, int(ratio)):
|
39 |
alpha = i / ratio
|
40 |
-
intermediate_frame = cv2.addWeighted(
|
41 |
intermediate_bgr = cv2.cvtColor(intermediate_frame, cv2.COLOR_GRAY2BGR)
|
42 |
output.write(intermediate_bgr)
|
43 |
|
44 |
output.write(next_frame)
|
45 |
-
|
46 |
|
47 |
cap.release()
|
48 |
output.release()
|
|
|
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()
|
29 |
+
raise ValueError("Не удалось прочитать кадры из видео.")
|
30 |
+
|
31 |
prev_frame_gray = cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY)
|
32 |
|
33 |
for _ in range(frame_count - 1):
|
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(prev_frame_gray, 1 - alpha, next_frame_gray, alpha, 0)
|
54 |
intermediate_bgr = cv2.cvtColor(intermediate_frame, cv2.COLOR_GRAY2BGR)
|
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()
|