[PYTHON] Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV

Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV

Einführung

`Dies ist ein Artikel über die Mac-Umgebung, aber die Vorgehensweise ist für die Windows-Umgebung dieselbe. Bitte lesen und probieren Sie den umweltabhängigen Teil. ``

Zweck

Zeigen Sie das Streaming-Video im Browser an.

Nachdem Sie diesen Artikel bis zum Ende gelesen haben, können Sie:

No. Überblick Stichwort
1 REST API Flask
2 OpenCV cv2

Vollständiges Bild

Streaming
IMG_4814.PNG

Ausführungsumgebung

Umgebung Ver.
macOS Catalina 10.15.6
Raspberry Pi 4 Model B 4GB RAM -
Raspberry Pi OS (Raspbian) 10
Python 3.7.3
Flask 1.1.2
opencv-python 4.4.0.42

Quellcode

Ich denke, dass Sie Ihr Verständnis vertiefen können, indem Sie den Implementierungsinhalten und dem Quellcode tatsächlich folgen. Bitte benutzen Sie es auf jeden Fall.

GitHub

Zum Thema passende Artikel

Kameraeinstellungen

Starten Sie das Raspberry Pi Software-Konfigurationstool

command.sh


~$ sudo raspi-config

Kamera aktiviert

  1. Wählen Sie "5 Schnittstellenoptionen"
  2. Wählen Sie P1 Camera

Starten Sie neu

command.sh


~$ sudo reboot

OpenCV-Abhängigkeit

HDF5

HDF5 is a file format and library for storing scientific data.

command.sh


~$ sudo apt-get install -y libhdf5-dev libhdf5-serial-dev libhdf5-103

ATLAS

ATLAS is an approach for the automatic generation and optimization of numerical software.

command.sh


~$ sudo apt-get install -y libatlas-base-dev

JasPer

JasPer is a collection of software (i.e., a library and application programs) for the coding and manipulation of images.

command.sh


~$ sudo apt-get install -y libjasper-dev

Hands on

herunterladen

command.sh


~$ git clone https://github.com/nsuhara/raspi-streaming.git -b master

installieren

command.sh


~$ cd raspi-streaming
~$ python -m venv .venv
~$ source .venv/bin/activate
~$ pip install -r requirements.txt
~$ source config

Servicestart

command.sh


~$ flask run --host=0.0.0.0 --port=5000

Zugriff

command.sh


~$ open "http://{host}:5000/raspi-streaming/api?process=front_end&request=app_form&secret_key=M7XvWE9fSFg3"

Serviceende

command.sh


~$ Control Key + C

App-Konfiguration

target.sh


/app
├── __init__.py
├── apis
│   ├── templates
│   │   └── app_form.html
│   └── views
│       ├── __init__.py
│       ├── back_end_handler.py
│       ├── camera.py
│       ├── front_end_handler.py
│       └── main_handler.py
├── common
│   ├── __init__.py
│   └── utility.py
├── config
│   ├── __init__.py
│   ├── localhost.py
│   └── production.py
└── run.py

front-end

target.sh


/app
└── apis
     ├── templates
     │   └── app_form.html
     └── views
         └── front_end_handler.py

Front-End-Steuerung

front_end_handler.py


"""app/apis/views/front_end_handler.py
"""
from flask import jsonify, render_template

from app import secret_key


def handler(req):
    """handler
    """
    param1 = req.get('param1')
    param2 = req.get('param2')

    if param1 == 'app_form':
        return _app_form(req=param2)

    return jsonify({'message': 'no route matched with those values'}), 200


def _app_form(req):
    """_app_form
    """
    if req.get('secret_key', '') != secret_key:
        return jsonify({'message': 'no route matched with those values'}), 200
    return render_template('app_form.html', secret_key=req.get('secret_key', ''))

Front-End-Layout

app_form.html


<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>raspi-streaming</title>

    <style type="text/css">
        html,
        body {
            -webkit-user-select: none;
            width: 100%;
            height: 100%;
        }

        table {
            width: 100%;
            height: 100%;
        }

        table,
        td {
            border: 1px gray solid;
            padding: 10px;
        }

        img.img-option {
            width: 100%;
            /* height: 100%; */
        }
    </style>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
    <script type="text/javascript">
    // nothing to do
    </script>
</head>

<body>
    <table>
        <tr height="5%">
            <td>
                <h1>raspi-streaming</h1>
            </td>
        </tr>
        <tr>
            <td>
                <img class="img-option"
                    src="{{ url_for('raspi-streaming.api', process='back_end', request='video_feed', secret_key=secret_key) }}">
            </td>
        </tr>
    </table>
</body>

</html>

back-end

target.sh


/app
└── apis
     └── views
         ├── back_end_handler.py
         └── camera.py

Backend-Steuerung

back_end_handler.py


"""app/apis/views/back_end_handler.py
"""
from flask import Response, jsonify

from app import secret_key
from app.apis.views.camera import Camera


def handler(req):
    """handler
    """
    param1 = req.get('param1')
    param2 = req.get('param2')

    if param1 == 'video_feed':
        return _video_feed(req=param2)

    return jsonify({'message': 'no route matched with those values'}), 200


def _video_feed(req):
    """_video_feed
    """
    if req.get('secret_key', '') != secret_key:
        return jsonify({'message': 'no route matched with those values'}), 200
    return Response(_generator(Camera()), mimetype='multipart/x-mixed-replace; boundary=frame')


def _generator(camera):
    """_generator
    """
    while True:
        frame = camera.frame()
        yield b'--frame\r\n'
        yield b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n'

Kamerasteuerung

camera.py


"""app/apis/views/camera.py
"""
import cv2


class Camera():
    """Camera
    """

    def __init__(self):
        self.video_capture = cv2.VideoCapture(-1)

    def __del__(self):
        self.video_capture.release()

    def frame(self):
        """frame
        """
        _, frame = self.video_capture.read()
        _, image = cv2.imencode('.jpeg', frame)
        return image.tobytes()

Recommended Posts

Erstellen Sie eine WEB-Überwachungskamera mit Raspberry Pi und OpenCV
Ich habe versucht, mit OpenCV eine Bewegungserkennungsüberwachungskamera mit einer WEB-Kamera mit Raspberry Pi herzustellen
Erstellen Sie einen Farbsensor mit einem Raspeltorte und einer Kamera
Ein Memorandum bei der Herstellung einer Überwachungskamera mit Raspeye
Ich habe zum ersten Mal eine Überwachungskamera mit Raspberry PI gemacht.
Erstellen Sie eine Auto-Anzeige mit Himbeer-Pi
So erstellen Sie eine Überwachungskamera (Überwachungskamera) mit Opencv und Python
Ermitteln Sie den Tragezustand der Maske mit OpenCV und Raspberry Pi
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Fehlerbehebung bei der Installation von OpenCV auf Raspberry Pi und der Erfassung
Zeigen Sie das Bild der USB-Kamera mit OpenCV von Python mit Raspeye an
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --2 PHP Einführung
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver. 1. Apache-Einführung
Python-Anfänger öffnet und schließt die ineinandergreifende Kamera mit Raspberry Pi
Quellkompilieren Sie Apache2.4 + PHP7.4 mit Raspberry Pi und erstellen Sie einen Webserver --3. Verwenden Sie MySQL
Erstellen Sie LCD-Spiele (16x2) mit Raspberry Pi und Python
Ich habe versucht, Raspeye und conect + mit der Web-API zu verbinden
Erstellen Sie eine Partition und installieren Sie Raspberry Pi OS
Verwenden einer Webkamera mit Raspberry Pi
Ich habe mit Razpai einen Webserver erstellt, um Anime zu schauen
Erstellen Sie eine gestreifte Illusion mit Gammakorrektur für Python3 und openCV3
Weihnachtsklassiker (?) Einen Weihnachtsbaum mit Raspberry Pi und Philips Hue anzünden
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 4 sichtbar
Erstellen Sie einen Kanji-Kompass mit Raspberry Pi und Sense Hat
Haustierüberwachung mit Rekognition und Raspberry pi
[Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu
Erstellen Sie eine Tensorflow-Umgebung mit Raspberry Pi [2020]
Erstellen Sie eine einfache Web-App mit Flasche
Machen Sie einen Waschtrocknungs-Timer mit Raspberry Pi
Erstellen Sie einen Webdienst mit Docker + Flask
Bedienen Sie das Oszilloskop mit dem Raspberry Pi
Erstellen Sie mit Python + OpenCV Ihre eigene virtuelle Kamera und wenden Sie Originaleffekte an
Erstellen Sie mit Raspberry Pi einen WLAN-Ethernet-Konverter und einen einfachen Router
Erstellen Sie einen Socket mit einer Ethernet-Schnittstelle (eth0, eth1) (Linux, C, Raspberry Pi).
Erstellen Sie eine Webmap mit Python und GDAL
MQTT Radicon Car mit Arduino und Himbeere
Starten Sie einen Webserver mit Python und Flask
Erstellen Sie ein Besuchermeldungssystem mit Raspberry Pi
Holen Sie sich Temperatur und Luftfeuchtigkeit mit DHT11 und Raspberry Pi
Machen Sie ein Thermometer mit Raspberry Pi und machen Sie es im Browser Teil 3 sichtbar
Cross-Compilieren von Raspberry Pi und Erstellen einer Remote-Debug-Entwicklungsumgebung mit VS Code
Erstellen eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (3) Empfangen einer Python-Datei
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
Ich habe versucht, mit Raspeye + Tact Switch eine Schaltfläche für Slack zu erstellen
Erstellen einer verteilten Umgebung mit der Raspberry PI-Serie (Teil 3: Installieren und Konfigurieren von dnsmasq)
[Python] So erstellen Sie eine lokale Webserverumgebung mit SimpleHTTPServer und CGIHTTPServer
GPGPU mit Raspberry Pi
Raspberry Pi Videokamera
Erklären Sie vorsichtig den Prozess der Erstellung einer einfachen Überwachungskamera ohne Server mithilfe von Raspeye, Gmail API und Line API
DigitalSignage mit Raspberry Pi
Notieren Sie Temperatur und Luftfeuchtigkeit mit systemd auf Raspberry Pi
Maschinelles Lernen mit Raspberry Pi 4 und Coral USB Accelerator
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Erstellen Sie mit Py2app und Tkinter eine native GUI-App
Messen Sie Temperatur und Luftfeuchtigkeit mit Raspberry Pi3 und visualisieren Sie mit Ambient
Erstellen Sie einen Stapel von Bildern und blasen Sie sie mit ImageDataGenerator auf
Erstellen Sie mit PyQt5 und PyQtGraph einen 3D-Modell-Viewer
[Linux] Erstellen Sie ein Selbstzertifikat mit Docker und Apache