Utilisez le flacon pour obtenir la vidéo de surveillance de la caméra Raspberry Pi

Table des matières

1. Installez la bibliothèque de flacons

2. Utilisez le flacon pour ouvrir la page Web pour transmettre la vidéo

2.1 Sur le bureau du terminal Raspberry Pi, créez un nouveau dossier flask

2.2 Dans le dossier flask, créez un nouveau dossier de modèle et un fichier app.py

2.3 Dans le dossier du modèle, créez un nouveau fichier index.html

2.4 Utilisez flask pour exécuter le code pour télécharger la vidéo de surveillance

3. Utilisez le formulaire ajax pour simuler les frappes au clavier et transférer les données du flacon à la tarte aux framboises.


1. Installez la bibliothèque de flacons

sudo install apt-get flask

2. Utilisez le flacon pour ouvrir la page Web pour transmettre la vidéo

2.1 Sur le bureau du terminal Raspberry Pi, créez un nouveau dossier flask

mkdir flask

2.2 Dans le dossier flask, créez un nouveau dossier de modèle et un fichier app.py

mkdir template
touch app.py

2.3 Dans le dossier du modèle, créez un nouveau fichier index.html

touch index.html

 

 Après la création, vous pouvez entrer la commande ls pour afficher le contenu du dossier en cours, et cd + nom du dossier pour entrer dans le dossier suivant.

2.4 Utilisez flask pour exécuter le code pour télécharger la vidéo de surveillance

Nous devons éditer deux fichiers le premier est index.html et l'autre est app.py

Le premier index.html écrit simplement la page web, le code est le suivant :

<!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>

Il s'agit d'une simple opération pour obtenir l'encodage vidéo, le streaming vidéo Motion JPEG fourni avec la fiole.

Le second est le fichier app.py

code afficher comme ci-dessous:

# 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)

 Pour expliquer brièvement :

@app.route('A',methods=['B']) Ce formulaire est un routage, qui peut être considéré comme un outil interactif entre flask et Raspberry Pi, sautant de l'adresse de la page Web à la page Web, ou de la page Web The données sur le saut à la fonction.

A est le suffixe de l'adresse de la page Web, B est une requête GET ou POST, lorsque la page Web reçoit la vidéo, il s'agit d'une requête GET, et lorsque le formulaire est pressé, une requête POST (le Raspberry Pi reçoit les données du bouton de la page Web)

(1) Entrez python3 app.py dans le dossier du flacon du terminal raspberry pie pour exécuter le code

python3 app.py

Il reviendra pour obtenir une adresse de page Web comme indiqué dans la figure : http://192.168.137.100:5008/

 (2) Nous ouvrons la page Web et entrons http://192.168.137.100:5008/video 

        vidéo est le A précédent, qui est le nom d'un itinéraire

(3) Après la saisie, nous pouvons obtenir la page Web qui est surveillée en temps réel.

 Cela complète simplement la fonction de vidéosurveillance.

Parlez brièvement du processus d'exécution du code

app.run exécute l'adresse IP et le port actuels → exécute la première route vidéo, renvoie la page Web index.html → exécute videourl, renvoie la fonction gen() pour encoder et transmettre la vidéo.

3. Utilisez le formulaire ajax pour simuler les frappes au clavier et transférer les données du flacon à la tarte aux framboises.

Quel problème ajax utilise-t-il pour résoudre?

Lorsque vous appuyez sur le formulaire, la vidéo de la page actuelle disparaît ou la vidéo de surveillance ne peut pas être lue normalement en raison d'erreurs d'encodage, ou la page actuelle est actualisée à plusieurs reprises, provoquant la réouverture de la caméra, et une erreur est signalée que la caméra est déjà occupé. Ajax peut uniquement actualiser la page du formulaire sans actualiser la vidéo de surveillance de la caméra.

Vous trouverez ci-dessous ma version complète du code index.html et app.py

J'ai oublié de le sauvegarder dans l'ordinateur, je ne suis pas au laboratoire, je le rattraperai la prochaine fois.

Je suppose que tu aimes

Origine blog.csdn.net/qq_51679917/article/details/130676848
conseillé
Classement