Computer_Vision / app.py
Segizu's picture
primer commit
7d1ac51
raw
history blame
1.9 kB
import cv2
import gradio as gr
from transformers import pipeline
# Cargar el modelo de detecci贸n de objetos de Hugging Face (DETR)
detector = pipeline("object-detection", model="facebook/detr-resnet-50")
def process_video(video_path):
"""
Procesa un video y devuelve el m谩ximo n煤mero detectado de personas, bicicletas y motos en un fotograma.
"""
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
return {"person": 0, "bicycle": 0, "motorcycle": 0}
max_counts = {"person": 0, "bicycle": 0, "motorcycle": 0}
while True:
ret, frame = cap.read()
if not ret:
break
# Convertir el frame de BGR a RGB (requerido por el modelo)
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# Realizar la detecci贸n de objetos
results = detector(frame_rgb)
# Contar objetos detectados en el frame actual (usamos un umbral de confianza)
frame_counts = {"person": 0, "bicycle": 0, "motorcycle": 0}
for detection in results:
if detection["score"] < 0.7:
continue
label = detection["label"].lower()
if label in frame_counts:
frame_counts[label] += 1
# Actualizar el conteo m谩ximo si en este frame se detecta m谩s
for key in frame_counts:
if frame_counts[key] > max_counts[key]:
max_counts[key] = frame_counts[key]
cap.release()
return max_counts
# Crear la interfaz de Gradio para el Space
iface = gr.Interface(
fn=process_video,
inputs=gr.Video(label="Sube tu video"),
outputs="json",
title="Detecci贸n de Objetos en Video",
description="Carga un video y detecta cu谩ntas personas, bicicletas y motos aparecen usando modelos de Hugging Face."
)
if __name__ == "__main__":
iface.launch()