- DVR für RTSP-Streaming vorbereiten
- Vorbereiten Ihres Raspberry Pi
- Installieren von OpenCV und anderen Bibliotheken auf Raspberry Pi
- Programmieren von Raspberry Pi zum Streamen von RTSP-Videos von CCTV
- Testen des Raspberry Pi CCTV Viewer
In den meisten Arbeits- und Geschäftsgebäuden ist heute ein CCTV-Überwachungssystem installiert, um die Aktivitäten zu überwachen. Oft ist es für die betroffene Behörde oder die Sicherheitspersonal jedoch schwierig, den Live-Feed aller Kameras kontinuierlich zu überwachen, um nach verdächtigen Aktivitäten zu suchen. Da Computer Vision und maschinelles Lernen in einer schnellen Phase voranschreiten, ist es an der Zeit, unsere CCTV-Systeme intelligenter zu machen. In diesem Artikel wird erläutert, wie Sie den Video-Feed von einem vorhandenen DVR (wie Hikvision DVR) über RTSP-Streaming mit Raspberry pi unter Verwendung von Python und OpenCV abrufen. Sobald wir dies erhalten haben, können wir die Leistung von OpenCV in diesen Video-Feeds nutzen, um ein bestimmtes Objekt zu erkennen, das Fahrzeugnummernschild zu lesen, das Gesicht zu erkennen und was nicht!
Für dieses Tutorial werde ich einen Hikvision 4-Kanal-CCTV-DVR verwenden, der bereits im Gebäude installiert ist. Wir werden alle 4 Kamerabildschirme auf die Himbeere streamen und sie auf einem 5-Zoll-Touchscreen-Display anzeigen, auf dem der Benutzer nach Bedarf zwischen den einzelnen Kanälen wechseln kann. Ich weiß das nicht viel, wenn man die Leistungsfähigkeit von OpenCV berücksichtigt, und ich habe vor, es mit Bewegungserkennung, Bugler-Video-Alarm, Personenverfolgung usw. zu skalieren, aber lassen wir das alles für ein anderes Tutorial.
DVR für RTSP-Streaming vorbereiten
Bevor wir uns mit der Himbeer-Pi-Hardware und dem Python-Code befassen, ist es wichtig zu überprüfen, ob der DVR RTSP unterstützt und wie darauf zugegriffen werden kann. Ich habe den größten Teil meiner Zeit hier verbracht, weil das Verfahren für jeden DVR-Typ unterschiedlich zu sein scheint und man viel tun und versuchen muss. Aber sobald Sie dies herausgefunden haben, funktioniert es jedes Mal wie ein Zauber.
Stellen Sie zunächst sicher, dass Sie den Benutzernamen und das Kennwort Ihres DVR-Systems kennen und es mit dem Internet verbunden ist. Auch in diesem Tutorial werde ich das RTSP nur von einem lokalen Netzwerk streamen. Wenn Sie eine statische IP haben, können Sie die Portweiterleitung durchführen und diese für andere Netzwerke befolgen. In Bezug auf dieses Tutorial werden wir jedoch alles innerhalb des lokalen Netzwerks tun.
Schritt 1: Suchen Sie die IP-Adresse Ihres DVR. Sobald der DVR mit dem Internet verbunden ist, wird ihm eine eigene IP-Adresse zugewiesen. Sie finden diese IP-Adresse entweder auf Ihrer Router-Konfigurationsseite oder auf Ihrem DVR-Bildschirm selbst (vorausgesetzt, Sie haben einen Monitor an den DVR angeschlossen). Die IP-Adresse meines Routers war http://192.168.11.110/ (aus Sicherheitsgründen geändert)
Schritt 2: Öffnen Sie einen Webbrowser Ihrer Wahl, geben Sie die IP-Adresse ein und drücken Sie die Eingabetaste. Sie werden zur DVR-Anmeldeseite weitergeleitet. Hier müssen Sie den Benutzernamen (meiner wird geändert) und das Passwort für Ihren DVR eingeben. Der Standardbenutzername ist admin, aber das Passwort müssen Sie kennen. Mein Anmeldebildschirm für DVR wird unten angezeigt. Möglicherweise sehen Sie anders aus.
Schritt 3: Suchen Sie nach einer erfolgreichen Anmeldung nach der RTSP-Portnummer auf Ihrem DVR. In den meisten Fällen beträgt der Standardwert 554, kann sich jedoch ändern. Während Sie hier sind, spielen Sie mit den Konfigurationseinstellungen, um zu überprüfen, ob es eine Option zum Aktivieren von RTSP gibt. Wenn nicht, können Sie diese überspringen. Sie müssen einige Zeit hier verbringen, da das Verfahren je nach DVR unterschiedlich ist.
Schritt 4: Bereiten Sie Ihren RTSP-Link vor. Der grundlegende RTSP-Link hat das folgende Format:
rtsp: //
Auch dies hängt von der Art des DVR ab. Sie können Google verwenden, um den für Sie geeigneten zu finden. Dasjenige, für das gearbeitet hat, hatte das folgende Format. Sie können es auch mit diesem Format versuchen:
rtsp: //
Wo
rtsp: // admin: [email protected]: 554 / Streaming / Channels / 202 /
Schritt 5: Spielen Sie den Stream auf VLC ab, um sicherzustellen, dass Ihre RTSP-Verbindung funktioniert. Installieren Sie VLC auf einem Computer, der mit demselben Netzwerk wie der DVR verbunden ist, starten Sie ihn und drücken Sie Strg + N für das Netzwerk-Streaming. Geben Sie die URL wie unten gezeigt ein und drücken Sie OK.
Wenn der RTSP-Link ordnungsgemäß funktioniert, sollte auf dem VLC-Player ein Live-Stream Ihrer Videoüberwachung angezeigt werden (siehe Abbildung unten). Wenn es einen Fehler auslöst, müssen Sie den richtigen Link herausfinden.
Nachdem dies erledigt ist, müssen wir nicht mehr über unseren DVR sprechen. Lassen Sie uns mit unserem Raspberry Pi weitermachen.
Vorbereiten Ihres Raspberry Pi
Als nächstes müssen wir unseren Himbeer-Pi mit dem 5-Zoll-Display einrichten. Ich werde nicht auf die Details eingehen, da wir dies bereits viele Male behandelt haben. Sie können die folgenden Artikel als Anleitung lesen:
- Erste Schritte mit Raspberry Pi
- 5-Zoll-Display mit Raspberry Pi verbinden
Wir verwenden einen Raspberry Pi 3 B + mit Debian Buster OS. Es könnte auch eine gute Idee sein, Pi 4 zu verwenden, wenn Sie können, und einige Kühloptionen wie einen Kühlkörper oder einen Lüfter hinzuzufügen, da ich bemerkte, dass die Temperatur fast 70 ° C erreichte. Ich habe bis jetzt keine Abkühlung durchgeführt, und mein Setup sieht so aus:
Installieren von OpenCV und anderen Bibliotheken auf Raspberry Pi
Der nächste Schritt ist die Installation von OpenCV auf Raspberry Pi. Wir haben zuvor besprochen, wie OpenCV auf Raspberry pi kompiliert wird.
- OpenCV auf Raspberry Pi installieren
- Erste Schritte mit OpenCV
Sie können entweder dem obigen Link folgen und OpenCV mit Cmake kompilieren oder es einfach mit einer apt-get-Methode installieren. Ich würde das später empfehlen, wenn Sie sich nicht für sehr ernsthafte OpenCV-Programmierung interessieren. Ich habe die folgenden Befehle verwendet, um OpenCV zu installieren.
sudo apt update sudo apt install python3-opencv
In unserem Programm werden wir auch die "cvui" -Bibliothek verwenden, um eine grundlegende Benutzeroberfläche mit zwei Schaltflächen zu erstellen, mit denen wir zwischen den vier Bildschirmen navigieren können. Um cvui zu installieren, folgen Sie dem folgenden Befehl.
Python3 pip install cvui
Wenn beide Pakete installiert sind, können wir in das Hauptprogramm gelangen. Stellen Sie sicher, dass beide installierten Pakete funktionieren, und versuchen Sie, sie vom Befehlsterminal von Pi zu importieren.
Programmieren von Raspberry Pi zum Streamen von RTSP-Videos von CCTV
Das vollständige Programm für dieses Projekt finden Sie am Ende dieser Seite. Die Erklärung dafür ist wie folgt. Wir beginnen das Programm mit der Aufnahme der erforderlichen Header-Dateien.
cv2 importieren cvui importieren
Der nächste Teil des Programms erfordert einige Änderungen. Sie müssen den Benutzernamen und das Passwort Ihres DVR eingeben. Für ein 5-Zoll-Display betragen die Breite und Höhe 800 bzw. 480, daher haben wir dasselbe eingegeben.
rtsp_username = "admin" rtsp_password = "aswinth347653" width = 800 height = 480 cam_no = 1
Im weiteren Verlauf haben wir eine Funktion namens "Kamera erstellen", die jedes Mal verwendet wird, wenn wir die Kameranummer ändern, die angezeigt werden soll.
def create_camera (channel): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@ 192.168.29.100: 554 / Streaming / channel /" + channel + "02" cap = cv2.VideoCapture () cap.open (rtsp) cap.set (3, 640) # ID-Nummer für Breite ist 3 cap.set (4, 480) # ID-Nummer für Höhe ist 480 cap.set (10, 100) # ID-Nummer für Helligkeit ist 10qq Rückgabekappe
Innerhalb der Haupt-while-Schleife haben wir unser Programm, um ein Bild vom Aufnahmegerät zu lesen und es in den Vollbildmodus umzuwandeln. Das Anzeigefenster in unserem Programm wird als Bildschirm aufgerufen.
Erfolg, current_cam = cam.read () dim = (Breite, Höhe) Full_frame = cv2.resize (current_cam, dim, Interpolation = cv2.INTER_AREA) cv2.namedWindow ('screen', cv2.WINDOW_NORMAL) cv2.setWindowProperty ('screen ', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
Anschließend haben wir den Code für zwei Schaltflächen, die auf dem Bildschirm platziert werden. Mit dem Befehl cvui.button wird die Schaltfläche an einer gewünschten Stelle platziert, und mit dem Befehl cvui.mouse wird der Mausklick erkannt . Wir haben zwei if- Anweisungen für zwei Schaltflächen, wenn auf die Schaltfläche geklickt wird. Die entsprechende if- Anweisung wird ausgeführt.
if (cvui.button (Full_frame, width - 100, height - 40, "Next") und cvui.mouse (cvui.CLICK)): print ("Next Button Pressed") cvui.init ('screen') cam_no = cam_no +1 if (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) if (cvui.button (Vollbild, Breite - 200, Höhe - 40, "Zurück") und cvui.mouse (cvui). KLICKEN)): print ("Vorheriger Knopf gedrückt") cvui.init ('screen') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
In der if- Anweisung erhöhen oder verringern wir basierend auf der Schaltfläche die Anzahl der cam_no und löschen dann die vorhandene Cam und erstellen eine neue Cam mit der oben beschriebenen Funktion. Beachten Sie außerdem, dass cvui.init jedes Mal aufrufen muss, um den Bildschirm der Benutzeroberfläche zu aktualisieren .
Der letzte Teil des Codes besteht darin, den Frame als Ausgabe anzuzeigen und den Ausgabebildschirm zu verlassen, wenn q gedrückt wird. Wir warten nur auf einen Tastendruck und wenn der Schlüssel 'q' ist, werden wir alle Fenster zerstören.
cv2.imshow ('screen', Full_frame) wenn cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Testen des Raspberry Pi CCTV Viewer
Das Testen des Codes ist ziemlich einfach. Schalten Sie den Pi ein und starten Sie den Python-Code, der unten auf dieser Seite angegeben ist. Stellen Sie sicher, dass Sie die richtigen Anmeldeinformationen eingegeben haben, damit der RTSP-Link funktioniert. Wenn Sie auf der sicheren Seite sein möchten, können Sie auch versuchen, den VLC-Player auf Pi zu verwenden, der auf dem Buster-Betriebssystem vorinstalliert ist.
Wenn es mit VLC funktioniert, können wir sicher sein, dass unser Pi mit demselben Netzwerk verbunden ist und die RTSP-Verbindung ordnungsgemäß funktioniert. Öffnen Sie dann das unten auf dieser Seite angegebene Programm und starten Sie es mit einer beliebigen Python-IDE. Wenn die Anmeldeinformationen korrekt eingegeben wurden, wird der folgende Bildschirm angezeigt. Hier wird der Live-Kamera-Feed mit zwei Schaltflächen unten angezeigt.
Da der Bildschirm über einen TFT-Touchscreen verfügt, können Sie einfach die Tasten „Zurück“ und „Weiter“ berühren, um zur nächsten Kamera zu gelangen. Das Programm ist so geschrieben, dass es zwischen den ersten vier Kameras wechselt. Sie können es problemlos ändern, wenn mehr als 4 Kameras an Ihren DVR angeschlossen sind.
Die vollständige Arbeitsweise dieses Projekts finden Sie im unten verlinkten Video. Ich hoffe, Ihnen hat das Tutorial gefallen und Sie haben etwas Nützliches gelernt, wenn Sie Fragen haben. Lassen Sie sie im Kommentarbereich oder nutzen Sie unsere Foren, um Ihre anderen Fragen zu stellen. Außerdem plane ich, diesem Setup eine Funktion zur Bewegungserkennung und zum Speichern von Videos hinzuzufügen. Bleiben Sie also auch darauf eingestellt.