- Forbereder DVR for RTSP-streaming
- Forbereder Raspberry Pi
- Installere OpenCV og andre biblioteker på Raspberry Pi
- Programmering Raspberry Pi for streaming av RTSP-video fra CCTV
- Testing av Raspberry Pi CCTV Viewer
De fleste arbeidsplasser og næringsbygg har i dag et overvåkningssystem for overvåking som er installert for å overvåke aktivitetene. Men ofte er det vanskelig for den berørte autoriteten eller sikkerhetsannonsene å overvåke live-feeden til alle kameraene kontinuerlig for å lete etter mistenkelig aktivitet. Med datasyn og maskinlæring fremover i en rask fase, er det på tide at vi gjør våre CCTV-systemer smartere. I denne artikkelen vil vi diskutere hvordan du får videofeeden fra en eksisterende DVR (som Hikvision DVR) gjennom RTSP-streaming med Raspberry pi ved hjelp av Python og OpenCV. Når vi har fått dette, vil vi kunne utnytte kraften til OpenCV på disse videofeedene for å oppdage for et bestemt objekt, lese bilens nummerskilt, ansiktsgjenkjenning og hva ikke!
Av hensyn til denne opplæringen vil jeg bruke en Hikvision 4-kanals CCTV DVR som allerede er installert i bygningen. Vi vil streame alle de fire kameraskjermene til bringebæret og vise det på en 5-tommers berøringsskjerm der brukeren kan skifte mellom hver kanal etter behov. Jeg vet ikke dette mye, med tanke på kraften til OpenCV, og jeg har planer om å skalere det opp med bevegelsesdeteksjon, buglervideoalarm, personsporing osv., Men la oss legge igjen alt det for en annen opplæring.
Forbereder DVR for RTSP-streaming
Før vi dykker inn i bringebær-pi-maskinvaren og pythonkoden, er det viktig å sjekke om DVR-en støtter RTSP og hvordan du får tilgang til den. Jeg brukte mesteparten av tiden min fast her fordi prosedyren ser ut til å variere for hver type DVR, og du må gjøre og mange treff og prøve. Men når du først har funnet ut dette, fungerer det som en sjarm hver gang.
Først må du sørge for at du kjenner brukernavnet og passordet til DVR-systemet ditt, og at det er koblet til internett. Også i denne opplæringen vil jeg bare streame RTSP fra et lokalt nettverk. Hvis du har en statisk IP, kan du videresende port og følge det samme for andre nettverk. Men når det gjelder denne opplæringen, vil vi gjøre alt i det lokale nettverket.
Trinn 1: Finn IP-adressen til DVR-en. Når DVR er koblet til Internett, tildeles den sin egen IP-adresse. Du finner denne IP-adressen enten fra ruterkonfigurasjonssiden eller fra selve DVR-skjermen (forutsatt at du har en skjerm koblet til DVR). IP-adressen til ruteren min var http://192.168.11.110/ (endret av sikkerhetsgrunner)
Trinn 2: Åpne hvilken som helst nettleser du velger, og skriv inn IP-adressen og trykk på enter. Du blir ført til DVR-påloggingssiden. Hvor du må oppgi brukernavn (mitt er endret) og passord for DVR-en din. Standard brukernavn er admin, men passordet må du vite. Min påloggingsskjerm for DVR vises nedenfor, du kan variere i utseende.
Trinn 3: Etter en vellykket pålogging, se etter RTSP-portnummeret på DVR-en din, vanligvis vil standardverdien være 554, men den kan endres. Mens du er her, spill med konfigurasjonsinnstillingene for å sjekke om det er et alternativ for å aktivere RTSP, hvis ikke kan du hoppe over det. Du må bruke litt tid her, siden prosedyren er forskjellig basert på DVR.
Trinn 4: Forbered RTSP-lenken din, den grunnleggende RTSP-lenken vil være i følgende format-
rtsp: //
Igjen, det avhenger av typen DVR, du kan bruke google for å finne den som vil fungere for deg. Den som jobbet for hadde formatet nedenfor, du kan også prøve med dette-
rtsp: //
Hvor
rtsp: // admin: [email protected]: 554 / Streaming / Channels / 202 /
Trinn 5: Spill av strømmen på VLC for å sikre at RTSP-tilkoblingen fungerer. Installer VLC på en datamaskin som er koblet til samme nettverk som DVR, start den og trykk Ctrl + N for nettverksstrømming. Skriv inn URL-en som vist nedenfor, og trykk OK.
Hvis RTSP-lenken fungerer slik den skal, bør du se en live stream av CCTV-en din på VLC-spilleren som vist nedenfor. Hvis det kaster feil, må du finne ut riktig lenke.
Når dette er gjort, trenger vi ikke lenger å snakke om at DVR-en vår kan fortsette med vår Raspberry pi.
Forbereder Raspberry Pi
Deretter må vi sette opp bringebær-pi med 5-tommers skjerm. Jeg kommer ikke til å komme inn i detaljene om det siden vi allerede har dekket det mange ganger. Du kan lese følgende artikler for veiledning-
- Komme i gang med Raspberry Pi
- Grensesnitt 5-tommers skjerm med Raspberry Pi
Vi bruker en Raspberry Pi 3 B + med Debian Buster OS som kjører i den. Det kan også være en god ide å bruke Pi 4 hvis du kan, og også legge til noen avkjølingsalternativer som en kjøleribbe eller vifte fordi jeg la merke til at temperaturen nådde nesten 70 * C. Jeg fulgte ingen kjøleprosedyrer per nå, og oppsettet mitt ser slik ut -
Installere OpenCV og andre biblioteker på Raspberry Pi
Neste trinn er å installere OpenCV på Raspberry Pi. Vi har tidligere diskutert hvordan vi skal kompilere OpenCV på Raspberry pi.
- Installere OpenCV på Raspberry Pi
- Komme i gang med OpenCV
Du kan enten følge lenken ovenfor og kompilere OpenCV ved hjelp av Cmake eller bare installere den med en apt-get-metode. Jeg vil anbefale det senere hvis du ikke er veldig seriøs OpenCV-programmering. Jeg brukte følgende kommandoer for å installere OpenCV.
sudo apt oppdater sudo apt installer python3-opencv
I vårt program vil vi også bruke biblioteket “cvui” til å lage et grunnleggende brukergrensesnitt med to knapper som lar oss navigere mellom de fire skjermbildene. Følg kommandoen nedenfor for å installere cvui.
Python3 pip installerer cvui
Med begge pakkene installert, kan vi komme inn i hovedprogrammet. Forsikre deg om at begge de installerte pakkene fungerer og prøver å importere dem fra kommandoterminalen til Pi.
Programmering Raspberry Pi for streaming av RTSP-video fra CCTV
Hele programmet for dette prosjektet finner du på slutten av denne siden. Forklaringen på det samme er som følger. Vi starter programmet med å inkludere de nødvendige headerfilene.
import cv2 import cvui
Neste del av programmet krever litt redigering. Du må oppgi brukernavnet og passordet til DVR-en. For en 5-tommers skjerm er bredden og høyden henholdsvis 800 og 480, så vi har angitt det samme.
rtsp_username = "admin" rtsp_password = "aswinth347653" width = 800 height = 480 cam_no = 1
Når vi går videre, har vi en funksjon som heter lage et kamera som skal brukes hver gang vi endrer kameranummeret som må vises.
def create_camera (channel): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@ 192.168.29.100: 554 / Streaming / kanaler /" + channel + "02" cap = cv2.VideoCapture () cap.open (rtsp) cap.set (3, 640) # ID-nummer for bredde er 3 cap.set (4, 480) # ID-nummer for høyde er 480 cap.set (10, 100) # ID-nummer for lysstyrke er 10qq returlokk
Inne i hoved-mens sløyfen har vi vårt program for å lese en ramme fra fangsenheten og konvertere den til fullskjerm. Skjermvinduet i programmet vårt blir kalt som et skjermbilde.
suksess, current_cam = cam.read () dim = (bredde, høyde) 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)
Etterfulgt av at vi har koden for to knapper som skal plasseres på skjermen. Kommandoen cvui.button brukes til å plassere knappen på et ønsket sted, og kommandoen cvui.mouse brukes til å oppdage museklikket. Vi har to if- setninger for to knapper hvis du klikker på knappen, den respektive if- setningen vil bli utført.
hvis (cvui.button (Full_frame, bredde - 100, høyde - 40, "Neste") og cvui.mouse (cvui.CLICK)): skriv ut ("Neste knapp trykket") cvui.init ('skjerm') 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, bredde - 200, høyde - 40, "Forrige") og cvui.mouse (cvui. KLIKK)): skriv ut ("Forrige knapp trykket") cvui.init ('skjerm') cam_no = cam_no - 1 hvis (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Inne i if- setningen, basert på knappen, øker eller reduserer vi enten antall cam_no og sletter deretter den eksisterende cam og oppretter en ny cam ved hjelp av funksjonen vi diskuterte ovenfor. Vær også oppmerksom på at cvui.init må ringe hver gang for å oppdatere brukergrensesnittet.
Den siste delen av koden er å vise rammen som utgang og for å gå ut fra utgangsskjermen når du trykker på q. Vi bare venter på et tastetrykk, og hvis nøkkelen er 'q', vil vi ødelegge alle vinduer.
cv2.imshow ('skjerm', fullramme) hvis cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () pause
Testing av Raspberry Pi CCTV Viewer
Å teste koden er ganske rett frem, slå på pi og start pythonkoden gitt nederst på denne siden. Forsikre deg om at du har angitt riktig legitimasjon for at RTSP-lenken skal fungere. Hvis du vil være på den sikre siden, kan du også prøve å bruke VLC-spilleren på Pi som er forhåndsinstallert på buster OS.
Hvis det fungerer på VLC, kan vi være sikre på at pi-en vår er koblet til det samme nettverket og RTSP-lenken fungerer som den skal. Åpne deretter programmet gitt nederst på denne siden og start det ved hjelp av hvilken som helst python IDE. Hvis legitimasjonen er skrevet inn riktig, vil du se følgende skjermbilde. Som viser live-kameraet med to knapper i bunnen.
Siden skjermen har en TFT-berøringsskjerm, kan du bare trykke på "forrige" og "neste" for å gå til neste kamera. Programmet er skrevet for å løkke mellom de fire første kameraene, du kan enkelt endre det hvis det er mer enn 4 kameraer koblet til DVR-en.
Fullstendig arbeid med dette prosjektet finner du i videoen som er lenket nedenfor. Håper du likte opplæringen og lærte noe nyttig hvis du har spørsmål, la dem være i kommentarseksjonen, eller du kan også bruke forumene våre til å legge ut andre spørsmål. Også, jeg planlegger å legge til bevegelsesdeteksjon og video lagringsfunksjon i dette oppsettet, så følg med på det også.