Use el matraz para obtener el video de vigilancia de la cámara Raspberry Pi

Tabla de contenido

1. Instale la biblioteca de matraces

2. Use el matraz para abrir la página web para transmitir video

2.1 En el escritorio del terminal Raspberry Pi, cree una nueva carpeta matraz

2.2 En la carpeta del matraz, cree una nueva carpeta de plantilla y un archivo app.py

2.3 En la carpeta de plantillas, cree un nuevo archivo index.html

2.4 Usar matraz para ejecutar código para cargar video de vigilancia

3. Use el formulario ajax para simular pulsaciones de teclas y transfiera datos del matraz al pastel de frambuesa.


1. Instale la biblioteca de matraces

sudo install apt-get flask

2. Use el matraz para abrir la página web para transmitir video

2.1 En el escritorio del terminal Raspberry Pi, cree una nueva carpeta matraz

mkdir flask

2.2 En la carpeta del matraz, cree una nueva carpeta de plantilla y un archivo app.py

mkdir template
touch app.py

2.3 En la carpeta de plantillas, cree un nuevo archivo index.html

touch index.html

 

 Después de la creación, puede ingresar el comando ls para ver el contenido de la carpeta actual y cd + nombre de la carpeta para ingresar a la siguiente carpeta.

2.4 Usar matraz para ejecutar código para cargar video de vigilancia

Necesitamos editar dos archivos, el primero es index.html y el otro es app.py

El primer index.html simplemente escribe la página web, el código es el siguiente:

<!DOCTYPE html>
<html>
  <head>  
    <title>HHH</title>
  </head>
  <body>
    <div class="header" id="demo">
      <div class="title"><h2>CTRL</h2></div>
      
       <form action="/video" method="post" enctype="multipart/form-data">
        <img src="{
   
   {videourl}}"> 
        <br>                                   
       </form>
            
      </div>
    
  </body>
</html>

Es una operación simple para obtener la codificación de video, la transmisión de video Motion JPEG que viene con el matraz.

El segundo es el archivo app.py

el código se muestra a continuación:

# coding: utf-8
from flask import Flask,render_template,Response,request,url_for
import cv2
import numpy as np
import time
import os


app = Flask(__name__)      

    
@app.route('/video', methods=['GET', 'POST'])
def videoshow():                
        return render_template('index.html',videourl=url_for('video_feed'))
           

@app.route('/video_feed',methods=['GET', 'POST'])
def video_feed():
    return Response(gen(),mimetype='multipart/x-mixed-replace; boundary=frame')



     
def gen():
    cap = cv2.VideoCapture(0)
    cap.set(3,600)
    cap.set(4,480)
    cap.set(5,40) 
    
    while True:
        ret, img  = cap.read()                             
        ret, jpeg = cv2.imencode('.jpg',img)  # 对图像进行编码输出 jpeg     
        yield(b'--frame\r\n'+b'Content-Type: image/jpeg\r\n\r\n' + jpeg.tobytes() + b'\r\n\r\n')
  
                  
if __name__ == '__main__':
    app.run(host='192.168.137.99', port=5008, debug=True)

 Para explicar brevemente:

@app.route('A',methods=['B']) Este formulario es enrutamiento, que se puede considerar como una herramienta interactiva entre el matraz y Raspberry Pi, saltando de la dirección de la página web a la página web, o de la página web Los datos sobre el salto a la función.

A es el sufijo de la dirección de la página web, B es una solicitud GET o POST, cuando la página web obtiene el video, es una solicitud GET, y cuando se presiona el formulario, es una solicitud POST (el Raspberry Pi recibe el botón de la página web datos)

(1) Ingrese python3 app.py en la carpeta del matraz de terminal de raspberry pie para ejecutar el código

python3 app.py

Volverá a obtener una dirección de página web como se muestra en la figura: http://192.168.137.100:5008/

 (2) Abrimos la página web y entramos en http://192.168.137.100:5008/video 

        video es la A anterior, que es el nombre de una ruta

(3) Después de ingresar, podemos obtener la página web que se está monitoreando en tiempo real.

 Esto simplemente completa la función de videovigilancia.

Hable brevemente sobre el proceso de ejecutar el código.

app.run ejecuta la dirección IP y el puerto actuales → ejecuta el primer video de ruta, devuelve la página web index.html → ejecuta videourl, devuelve la función gen() para codificar y transmitir el video.

3. Use el formulario ajax para simular pulsaciones de teclas y transfiera datos del matraz al pastel de frambuesa.

¿Qué problema se utiliza ajax para resolver?

Cuando se presiona el formulario, el video en la página actual desaparecerá o el video de vigilancia no se puede reproducir normalmente debido a errores de codificación, o la página actual se actualiza repetidamente, lo que hace que la cámara se vuelva a abrir y se informa un error que la cámara ya está ocupado. Ajax solo puede actualizar la página del formulario sin actualizar el video de monitoreo de la cámara.

A continuación se muestra mi versión completa del código index.html y app.py

Olvidé guardarlo en la computadora. No estoy en el laboratorio. Lo haré la próxima vez.

Supongo que te gusta

Origin blog.csdn.net/qq_51679917/article/details/130676848
Recomendado
Clasificación