Yaroslav commited on
Commit
6f47cc6
·
verified ·
1 Parent(s): e804a7f

fix the flickering

Browse files
Files changed (1) hide show
  1. app.py +6 -13
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
- 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()
 
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()