Use o frasco para obter o vídeo de vigilância da câmera Raspberry Pi

Índice

1. Instale a biblioteca de frascos

2. Use o balão para abrir a página da Web para transmitir o vídeo

2.1 Na área de trabalho do terminal Raspberry Pi, crie uma nova pasta flask

2.2 Na pasta flask, crie uma nova pasta de modelo e o arquivo app.py

2.3 Na pasta template, crie um novo arquivo index.html

2.4 Use o flask para executar o código para fazer upload do vídeo de vigilância

3. Use o formulário ajax para simular pressionamentos de tecla e transfira dados do balão para a torta de framboesa.


1. Instale a biblioteca de frascos

sudo install apt-get flask

2. Use o balão para abrir a página da Web para transmitir o vídeo

2.1 Na área de trabalho do terminal Raspberry Pi, crie uma nova pasta flask

mkdir flask

2.2 Na pasta flask, crie uma nova pasta de modelo e o arquivo app.py

mkdir template
touch app.py

2.3 Na pasta template, crie um novo arquivo index.html

touch index.html

 

 Após a criação, você pode digitar o comando ls para visualizar o conteúdo da pasta atual e cd + nome da pasta para entrar na próxima pasta.

2.4 Use o flask para executar o código para fazer upload do vídeo de vigilância

Precisamos editar dois arquivos, o primeiro é index.html e o outro é app.py

O primeiro index.html simplesmente escreve a página web, o código é o seguinte:

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

É uma operação simples para obter a codificação de vídeo, o streaming de vídeo Motion JPEG que vem com o flask.

O segundo é o arquivo app.py

código mostra como abaixo:

# 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 formulário é o roteamento, que pode ser considerado como uma ferramenta interativa entre o flask e o Raspberry Pi, saltando do endereço da página da web para a página da web, ou da página da web O dados no salto para a função.

A é o sufixo do endereço da página da web, B é uma solicitação GET ou POST, quando a página da web recebe o vídeo, é uma solicitação GET e quando o formulário é pressionado, uma solicitação POST (o Raspberry Pi recebe os dados do botão da página da web)

(1) Digite python3 app.py na pasta framboesa torta terminal flask para executar o código

python3 app.py

Ele retornará para obter um endereço de página da Web, conforme mostrado na figura: http://192.168.137.100:5008/

 (2) Abrimos a página da web e entramos em http://192.168.137.100:5008/video 

        video é o A anterior, que é o nome de uma rota

(3) Depois de inserir, podemos obter a página da Web que está sendo monitorada em tempo real.

 Isso simplesmente completa a função de vigilância por vídeo.

Fale brevemente sobre o processo de execução do código

app.run executa o endereço IP atual e a porta → executa o vídeo da primeira rota, retorna a página index.html → executa videourl, retorna a função gen() para codificar e transmitir o vídeo.

3. Use o formulário ajax para simular pressionamentos de tecla e transfira dados do balão para a torta de framboesa.

Qual problema o ajax é usado para resolver?

Quando o formulário é pressionado, o vídeo na página atual desaparece ou o vídeo de vigilância não pode ser reproduzido normalmente devido a erros de codificação, ou a página atual é atualizada repetidamente, fazendo com que a câmera seja reaberta e um erro é relatado que a câmera já está ocupado. O Ajax só pode atualizar a página do formulário sem atualizar o vídeo de monitoramento da câmera.

Abaixo está minha versão completa do código index.html e app.py

Esqueci de salvar no computador, não estou no laboratório, vou inventar da próxima vez.

Acho que você gosta

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