DHEIVER commited on
Commit
e533871
·
verified ·
1 Parent(s): 6d2fbdf

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -4
app.py CHANGED
@@ -4,7 +4,7 @@ import cv2
4
  import tempfile
5
 
6
  # Carregar o modelo YOLOv8
7
- model = YOLO("yolov8n.pt") # Você pode usar 'yolov8s.pt', 'yolov8m.pt', etc., dependendo do seu requisito
8
 
9
  def detect_objects(video_path):
10
  # Abrir o vídeo de entrada
@@ -12,22 +12,38 @@ def detect_objects(video_path):
12
  if not cap.isOpened():
13
  raise ValueError("Não foi possível abrir o vídeo.")
14
 
15
- # Criar um arquivo temporário para salvar o vídeo processado
16
  output_path = tempfile.NamedTemporaryFile(suffix=".mp4", delete=False).name
17
  fourcc = cv2.VideoWriter_fourcc(*'mp4v')
18
- out = cv2.VideoWriter(output_path, fourcc, 30.0, (int(cap.get(3)), int(cap.get(4))))
 
 
 
 
 
 
19
 
20
  while cap.isOpened():
21
  ret, frame = cap.read()
22
  if not ret:
23
  break
24
 
 
 
 
 
 
 
 
 
25
  # Realizar a detecção de objetos
26
- results = model(frame)
27
  annotated_frame = results[0].plot() # Obter o frame com as detecções
28
 
29
  # Escrever o frame processado no vídeo de saída
30
  out.write(annotated_frame)
 
 
31
 
32
  # Liberar os recursos
33
  cap.release()
 
4
  import tempfile
5
 
6
  # Carregar o modelo YOLOv8
7
+ model = YOLO("yolov8n.pt") # Use o modelo mais leve (nano)
8
 
9
  def detect_objects(video_path):
10
  # Abrir o vídeo de entrada
 
12
  if not cap.isOpened():
13
  raise ValueError("Não foi possível abrir o vídeo.")
14
 
15
+ # Configurar a saída de vídeo
16
  output_path = tempfile.NamedTemporaryFile(suffix=".mp4", delete=False).name
17
  fourcc = cv2.VideoWriter_fourcc(*'mp4v')
18
+ fps = int(cap.get(cv2.CAP_PROP_FPS))
19
+ width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH) // 2) # Reduzir a largura pela metade
20
+ height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT) // 2) # Reduzir a altura pela metade
21
+ out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))
22
+
23
+ frame_skip = 2 # Pular 1 frame a cada 2 (processar apenas metade dos frames)
24
+ frame_count = 0
25
 
26
  while cap.isOpened():
27
  ret, frame = cap.read()
28
  if not ret:
29
  break
30
 
31
+ # Pular frames intermediários
32
+ if frame_count % frame_skip != 0:
33
+ frame_count += 1
34
+ continue
35
+
36
+ # Redimensionar o frame para metade da resolução original
37
+ resized_frame = cv2.resize(frame, (width, height))
38
+
39
  # Realizar a detecção de objetos
40
+ results = model(resized_frame)
41
  annotated_frame = results[0].plot() # Obter o frame com as detecções
42
 
43
  # Escrever o frame processado no vídeo de saída
44
  out.write(annotated_frame)
45
+
46
+ frame_count += 1
47
 
48
  # Liberar os recursos
49
  cap.release()