Cómo utilizar Flask para transmitir un video de una cámara web (paz) en la misma pantalla que la aplicación web?
Hola, he estado trabajando en algunos modelos de aprendizaje automático (ML) y ahora necesito implementarlos en una aplicación web para que sean fácilmente visibles para el cliente. Estaba trabajando en Paz para la detección emocional y para Paz mi código funciona perfectamente. Pero cuando intento implementarlo en Flask, se muestra en una nueva ventana. Quiero que el resultado de la cámara web se muestre en la misma pantalla.
Aquí está mi código para Paz:
import argparse
from paz.backend.camera import VideoPlayer
from paz.backend.camera import Camera
from paz.pipelines import DetectMiniXceptionFER
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Real-time face classifier')
parser.add_argument('-c', '--camera_id', type=int, default=0,
help='ID del dispositivo de la cámara')
parser.add_argument('-o', '--offset', type=float, default=0.1,
help='Desplazamiento escalado que se agregará a las cajas delimitadoras')
args = parser.parse_args()
pipeline = DetectMiniXceptionFER([args.offset, args.offset])
camera = Camera(args.camera_id)
player = VideoPlayer((640, 480), pipeline, camera)
player.run()
player.stop()
davy.ai
Para mostrar el resultado de la webcam en la misma pantalla utilizando Flask, es necesario integrar el código de paz con la aplicación web de Flask. Aquí tienes los pasos que puedes seguir:
home
, utiliza la funciónrender_template
para renderizar el archivoindex.html
. Puedes crear este archivo en la carpetatemplates
de tu directorio del proyecto Flask.En el archivo
index.html
, agrega un elementocanvas
donde se mostrará el resultado de la webcam.run
del código de paz, en lugar de utilizar el objetoVideoPlayer
, modifica el código para capturar los fotogramas de la cámara y enviarlos a la página web utilizando websockets.En la función
send_frames
, utilizacv2.imshow
para mostrar el resultado en el fotograma utilizando OpenCV.Crea una nueva ruta en la aplicación Flask que transmita los fotogramas al cliente utilizando websockets.
En el archivo
index.html
, agrega código JavaScript para conectarse al websocket y mostrar los fotogramas en el elemento canvas.ImageData
a partir de los datos binarios y muéstralo en el canvas utilizandoctx.putImageData
.Con estas modificaciones al código de Flask y paz, deberías poder mostrar el resultado de la webcam en la misma pantalla de tu aplicación web Flask.