- Forberedelse af DVR til RTSP-streaming
- Forberedelse af din Raspberry Pi
- Installation af OpenCV og andre biblioteker på Raspberry Pi
- Programmering af Raspberry Pi til streaming af RTSP-video fra CCTV
- Test af Raspberry Pi CCTV Viewer
De fleste arbejdspladser og erhvervsbygninger i dag har et CCTV-overvågningssystem installeret til at overvåge aktiviteterne. Men ofte er det svært for den berørte myndighed eller sikkerhedskontakter at overvåge live-feedet på alle kameraerne kontinuerligt for at se efter mistænkelig aktivitet. Med computersyn og maskinindlæring fremad i en hurtig fase, er det på tide, at vi gør vores CCTV-systemer smartere. I denne artikel vil vi diskutere, hvordan man får videofeed fra en eksisterende DVR (som Hikvision DVR) gennem RTSP-streaming med Raspberry pi ved hjælp af Python og OpenCV. Når vi først har fået dette, vil vi være i stand til at udnytte kraften i OpenCV på disse videofeeds til at detektere for et bestemt objekt, læse køretøjets nummerplade, ansigtsgenkendelse og hvad ikke!
Af hensyn til denne vejledning bruger jeg en Hikvision 4-kanals CCTV DVR, der allerede er installeret i bygningen. Vi streamer alle de 4 kameraskærme til hindbæret og viser det på en 5-tommers berøringsskærm, hvor brugeren kan skifte mellem hver kanal efter behov. Jeg ved det ikke meget, i betragtning af kraften i OpenCV, og jeg har planer om at skalere det op med bevægelsesdetektering, bugler-videoalarm, personsporing osv., Men lad os lade alt dette være til en anden tutorial.
Forberedelse af DVR til RTSP-streaming
Før vi dykker ned i hindbær pi-hardware og python-kode, er det vigtigt at kontrollere, om DVR understøtter RTSP, og hvordan man får adgang til den. Jeg tilbragte størstedelen af min tid fast her, fordi proceduren ser ud til at variere for hver type DVR, og du skal gøre og mange hits og prøve. Men når du først har fundet ud af dette, fungerer det som en charme hver gang.
Først skal du sørge for at kende brugernavnet og adgangskoden til dit DVR-system, og at det er forbundet til internettet. Også i denne vejledning streamer jeg kun RTSP fra et lokalt netværk. Hvis du har en statisk IP, kan du videresende port og følge det samme for andre netværk. Men hvad denne tutorial angår, vil vi gøre alt inden i det lokale netværk.
Trin 1: Find IP-adressen på din DVR. Når DVR'en er tilsluttet internettet, tildeles den sin egen IP-adresse. Du kan finde denne IP-adresse enten fra din routerkonfigurationsside eller fra selve DVR-skærmen (forudsat at du har en skærm tilsluttet DVR). IP-adressen på min router var http://192.168.11.110/ (ændret af sikkerhedsmæssige årsager)
Trin 2: Åbn en hvilken som helst webbrowser efter eget valg, og indtast IP-adressen, og tryk på Enter. Du føres til DVR-login-siden. Hvor du skal indtaste brugernavnet (mit ændres) og adgangskoden til din DVR. Standardbrugernavnet er admin, men den adgangskode, du skal kende. Min loginskærm til DVR er vist nedenfor, din kan variere i udseende.
Trin 3: Efter et vellykket login skal du kigge efter RTSP-portnummeret på din DVR, de fleste gange er standardværdien 554, men den kan ændre sig. Mens du er her, skal du lege med konfigurationsindstillingerne for at kontrollere, om der er en mulighed for at aktivere RTSP, hvis ikke kan du springe den over. Du er nødt til at bruge lidt tid her, da proceduren er forskellig baseret på DVR.
Trin 4: Forbered dit RTSP-link, det grundlæggende RTSP-link vil være i følgende format-
rtsp: //
Igen afhænger det af typen DVR, du kan bruge google til at finde den, der fungerer for dig. Den, der arbejdede for, havde nedenstående format, du kan også prøve med dette-
rtsp: //
Hvor
rtsp: // admin: [email protected]: 554 / Streaming / Kanaler / 202 /
Trin 5: Afspil streamen på VLC for at sikre, at din RTSP-forbindelse fungerer. Installer VLC på en computer, der er forbundet til det samme netværk som DVR, start den, og tryk på Ctrl + N for netværksstreaming. Indtast URL'en som vist nedenfor, og tryk på okay.
Hvis RTSP-linket fungerer som det skal, skal du se en live stream af dit CCTV på VLC-afspilleren som vist nedenfor. Hvis det kaster en fejl, skal du finde ud af det rigtige link.
Når dette er gjort, behøver vi ikke længere tale om, at vores DVR kan fortsætte med vores Raspberry pi.
Forberedelse af din Raspberry Pi
Dernæst er vi nødt til at oprette vores hindbær pi med 5-tommers skærm. Jeg vil ikke komme i detaljer med det, da vi allerede har dækket det mange gange. Du kan læse følgende artikler til vejledning-
- Kom godt i gang med Raspberry Pi
- Interfacing 5-tommer skærm med Raspberry Pi
Vi bruger en Raspberry Pi 3 B + med Debian Buster OS, der kører i den. Det kan også være en god ide at bruge Pi 4, hvis du kan, og også tilføje nogle køleindstillinger som et kølelegeme eller en ventilator, fordi jeg bemærkede, at temperaturen nåede næsten 70 * C. Jeg har ikke fulgt nogen køleprocedure lige nu, og min opsætning ser sådan ud -
Installation af OpenCV og andre biblioteker på Raspberry Pi
Næste trin er at installere OpenCV på Raspberry Pi. Vi har tidligere diskuteret, hvordan man kompilerer OpenCV på Raspberry pi.
- Installation af OpenCV på Raspberry Pi
- Kom godt i gang med OpenCV
Du kan enten følge ovenstående link og kompilere OpenCV ved hjælp af Cmake eller bare installere det med en apt-get-metode. Jeg vil anbefale det senere, hvis du ikke er i meget seriøs OpenCV-programmering. Jeg brugte følgende kommandoer til at installere OpenCV.
sudo apt opdatering sudo apt installer python3-opencv
I vores program vil vi også bruge biblioteket "cvui" til at oprette en grundlæggende brugergrænseflade med to knapper, der giver os mulighed for at navigere mellem de fire skærme. Følg nedenstående kommando for at installere cvui.
Python3 pip installerer cvui
Med begge installerede pakker kan vi komme ind i hovedprogrammet. Sørg for, at begge de installerede pakker fungerer, og prøver at importere dem fra Pi-kommandoterminalen.
Programmering af Raspberry Pi til streaming af RTSP-video fra CCTV
Det komplette program for dette projekt kan findes i slutningen af denne side. Forklaringen på det samme er som følger. Vi starter programmet med at inkludere de nødvendige headerfiler.
import cv2 import cvui
Den næste del af programmet kræver en del redigering. Du skal indtaste brugernavnet og adgangskoden til din DVR. For en 5-tommers skærm er bredden og højden henholdsvis 800 og 480, så vi har indtastet det samme.
rtsp_username = "admin" rtsp_password = "aswinth347653" width = 800 height = 480 cam_no = 1
Når vi går videre, har vi en funktion kaldet Opret et kamera, der vil blive brugt hver gang vi ændrer det kameranummer, der skal ses.
def create_camera (kanal): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@ 192.168.29.100: 554 / Streaming / kanaler /" + kanal + "02" cap = cv2.VideoCapture () cap.åbne (rtsp) cap.set (3, 640) # ID-nummer for bredde er 3 cap.set (4, 480) # ID-nummer for højde er 480 cap.set (10, 100) # ID-nummer for lysstyrke er 10qq returhætte
Inde i hoved-mens-sløjfen har vi vores program til at læse en ramme fra fangeenheden og konvertere den til fuld skærm. Displayvinduet i vores program kaldes som en skærm.
success, current_cam = cam.read () dim = (width, height) 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)
Efterfulgt af det har vi koden til to knapper, der placeres på skærmen. Kommandoen cvui.button bruges til at placere knappen et ønsket sted, og kommandoen cvui.mouse bruges til at registrere museklik. Vi har to if- sætninger for to knapper, hvis der klikkes på knappen, den respektive if- sætning vil blive udført.
if (cvui.button (Full_frame, width - 100, height - 40, "Next") og cvui.mouse (cvui.CLICK)): print ("Next Button Pressed") cvui.init ('screen') cam_no = cam_no +1 hvis (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) if (cvui.button (Full_frame, width - 200, height - 40, "Previous") og cvui.mouse (cvui. KLIK)): print ("Forrige knap trykket") cvui.init ('skærm') cam_no = cam_no - 1 hvis (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Inde i if- sætningen, baseret på knappen, øger eller formindsker vi enten antallet af cam_no og derefter sletter det eksisterende cam og opretter et nyt cam ved hjælp af den funktion, vi diskuterede ovenfor. Bemærk også, at cvui.init skal ringe til hver gang for at opdatere brugergrænsefladen.
Den sidste del af koden er at vise rammen som output og til at komme ud fra outputskærmen, når der trykkes på q. Vi venter bare på et tastetryk, og hvis nøglen er 'q', vil vi ødelægge alle vinduer.
cv2.imshow ('skærm', fuld_ramme) hvis cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () pause
Test af Raspberry Pi CCTV Viewer
Test af koden er ret ligetil, tænd for pi og start python-koden, der er angivet nederst på denne side. Sørg for at du har indtastet de rigtige legitimationsoplysninger for at RTSP-linket skal fungere. Hvis du vil være på den sikre side, kan du også prøve at bruge VLC-afspilleren på Pi, der kommer forudinstalleret på buster OS.
Hvis det fungerer på VLC, kan vi være sikre på, at vores pi er forbundet til det samme netværk og RTSP-linket fungerer som det skal. Åbn derefter programmet givet i bunden af denne side, og start det ved hjælp af en hvilken som helst python IDE. Hvis legitimationsoplysningerne er indtastet korrekt, vil du se følgende skærmbillede. Hvilket viser live-kameraet med to knapper i bunden.
Da skærmen har en TFT-berøringsskærm, kan du blot berøre knapperne “forrige” og “næste” for at flytte til det næste kamera. Programmet er skrevet til at løkke mellem de første fire kameraer, du kan nemt ændre det, hvis der er mere end 4 kameraer tilsluttet til din DVR.
Den komplette bearbejdning af dette projekt kan findes i nedenstående video. Håber du har haft vejledningen og lært noget nyttigt, hvis du har spørgsmål, skal du lade dem være i kommentarsektionen, eller du kan også bruge vores fora til at sende dine andre spørgsmål. Jeg planlægger også at tilføje bevægelsesdetektering og videobesparelsesfunktion til denne opsætning, så hold dig også opdateret med det.