¿Cómo puedo transmitir un video openCV a una página web HTML?

Estoy haciendo un robot que tendrá una cámara web para proporcionar una detección de objetos simple. Por ahora, me gustaría simplemente transmitir el video a una página web alojada en el robot y poder verlo desde otro dispositivo. He escrito un script de prueba simple en Python (eventualmente me moveré a C ++, mi idioma de elección) que puede obtener una transmisión de mi cámara web, y luego hacer lo que sea necesario con ella desde allí. El problema entonces es que no puedo escribir el video en un archivo mientras la aplicación se está ejecutando, solo escribe el archivo después de salir de la secuencia de comandos. Ya tengo un servidor web en ejecución, y puedo escribir el código básico en HTML para alojar un video desde un archivo también, y todo eso funciona.

Para resumir: ¿Es openCV2 en Python y / o C ++ capaz de transmitir videos en vivo usando solo openCV? Si no, ¿qué biblioteca recomendaría que intente tomar un objeto de captura de CV o un objeto Mat y escribirlo en una secuencia que luego puedo colocar en una página web? En HTML, ¿es la etiqueta una buena idea para transmitir video con?

Muchas gracias por el consejo, puedo usar todos los consejos * que puedo obtener.

Si necesita algo más claro / código publicado / explicaciones más allá de lo que he dado, ¡pregunte y lo haré!

El problema de la transmisión de marcos fuera de OpenCV y Python se ha abordado en el siguiente hilo: Canalizar imágenes OpenCV sin procesar a FFmpeg

Esto no funcionó para mí, pero afirman que lo hizo para ellos.

La razón por la que no funciona en mi caso parece ser que para algunos marcos de salida se agregaron o perdieron bytes adicionales, en algún lugar entre la salida a la salida estándar en capture.py y la entrada a FFMPEG. Por lo tanto, el número de bytes no corresponde al número de cuadros. No estoy seguro de por qué este es el caso. Utilicé Windows 7.

Tendré curiosidad por saber cuál es tu experiencia si lo intentas. También probé una versión modificada de capture.py usando cv2, y fallé por las mismas razones.

Trate de leer esto y esto .

Básicamente, tiene que usar OpenCV para capturar los marcos y empaquetarlos en formatos específicos que se ajusten al protocolo de transmisión, luego desde su servidor use HTML5 para ponerlo en la página. Es posible que deba usar VLC o FFMepg para empacar su cv :: Mat. Esperamos que esto sea útil.

En condiciones de laboratorio envías imágenes completas.

Parece que estás en condiciones de laboratorio, por lo que hay una solución simplista y fácil de usar, simplemente transmite PNG’s en Base64 usando Websockets. En el lado del cliente (navegador web), solo recibe las imágenes base64 y las carga directamente en el src de un . Funciona muy bien para escenarios de laboratorio, aunque lento.