- Priprava DVR za pretakanje RTSP
- Priprava vašega Raspberry Pi
- Namestitev OpenCV in drugih knjižnic na Raspberry Pi
- Programiranje Raspberry Pi za pretakanje RTSP videa s CCTV
- Testiranje pregledovalnika CCTV Raspberry Pi
Danes je v večini delovnih mest in poslovnih zgradb nameščen nadzorni sistem CCTV za spremljanje dejavnosti. Toda pogosto je za zadevne organe ali varnostnike težko, da neprekinjeno spremljajo prenos vseh kamer v živo in iščejo sumljive dejavnosti. Ker računalniški vid in strojno učenje hitro napredujeta, je že čas, da svoje CCTV sisteme naredimo pametnejše. V tem članku bomo razpravljali o tem, kako pridobiti video vir iz obstoječega DVR-ja (na primer Hikvision DVR) prek pretakanja RTSP z Raspberry pi z uporabo Python in OpenCV. Ko bomo to dosegli, bomo lahko izkoristili moč OpenCV na teh video virih za zaznavanje določenega predmeta, branje registrske tablice vozila, prepoznavanje obrazov in še česa!
Zaradi te vadnice bom uporabil 4-kanalni CCTV DVR Hikvision, ki je že nameščen v stavbi. Na Raspberry bomo preusmerili vse 4 zaslone kamer in jih prikazali na 5-palčnem zaslonu na dotik, kjer lahko uporabnik po potrebi preklaplja med posameznimi kanali. Glede na moč OpenCV tega ne vem veliko in nameravam ga povečati z zaznavanjem gibanja, video opozorilom, sledenjem oseb itd., Vendar pustimo vse to za drugo vadnico.
Priprava DVR za pretakanje RTSP
Preden se potopimo v strojno opremo Raspberry Pi in kodo python, je pomembno preveriti, ali DVR podpira RTSP in kako do njega dostopati. Večino svojega časa sem preživel tukaj, ker se zdi, da se postopek razlikuje za vsako vrsto DVR-ja, zato morate narediti veliko zadetkov in poskusiti. Ko pa to enkrat ugotoviš, to vsakič deluje kot čar.
Najprej se prepričajte, da poznate uporabniško ime in geslo vašega DVR sistema in je povezan z internetom. Tudi v tej vadnici bom RTSP pretakal samo iz lokalnega omrežja, če imate statični IP, lahko posredujete vrata in sledite enakemu za druga omrežja. Kar pa zadeva to vadnico, bomo počeli vse znotraj lokalnega omrežja.
1. korak: Poiščite naslov IP DVR-ja. Ko je DVR povezan z internetom, mu bo dodeljen lasten naslov IP. Ta naslov IP lahko najdete na strani za konfiguracijo usmerjevalnika ali na samem zaslonu DVR (ob predpostavki, da imate na DVR priključen monitor). Naslov IP mojega usmerjevalnika je bil http://192.168.11.110/ (spremenjen iz varnostnih razlogov)
2. korak: Odprite kateri koli spletni brskalnik po vaši izbiri in vnesite naslov IP ter pritisnite na enter. Preusmerjeni boste na stran za prijavo v DVR. Kjer morate vnesti uporabniško ime (moje je spremenjeno) in geslo za vaš DVR. Privzeto uporabniško ime bo admin, vendar morate vedeti geslo. Zaslon za prijavo za DVR je prikazan spodaj, videz se lahko razlikuje.
3. korak: Po uspešni prijavi poiščite številko vrat RTSP na DVR-ju, največkrat bo privzeta vrednost 554, vendar se lahko spremeni. Medtem ko ste tukaj, se poigrajte s konfiguracijskimi nastavitvami in preverite, ali obstaja možnost, da omogočite RTSP, če pa ne, jo lahko preskočite. Tukaj morate preživeti nekaj časa, saj je postopek drugačen glede na DVR.
4. korak: Pripravite povezavo RTSP, osnovna povezava RTSP bo v naslednji obliki -
rtsp: //
Še enkrat, odvisno od vrste DVR-ja, lahko z Googlom poiščete tistega, ki bo ustrezal vam. Tisti, ki je delal, je imel spodnjo obliko, lahko poskusite tudi s tem -
rtsp: //
Kje
rtsp: // admin: [email protected]: 554 / Pretakanje / Kanali / 202 /
5. korak: Predvajajte tok na VLC in se prepričajte, da vaša povezava RTSP deluje. Namestite VLC v računalnik, ki je povezan z istim omrežjem kot DVR, ga zaženite in pritisnite Ctrl + N za omrežno pretakanje. Vnesite URL, kot je prikazano spodaj, in pritisnite OK.
Če povezava RTSP deluje tako, kot bi morala, bi morali na predvajalniku VLC videti predvajanje v živo vašega CCTV-ja, kot je prikazano spodaj. Če se prikaže napaka, morate ugotoviti pravilno povezavo.
Ko je to storjeno, nam ni več treba govoriti o našem DVR-ju, da nadaljujemo z našo Raspberry pi.
Priprava vašega Raspberry Pi
Nato moramo svojo malino pi nastaviti s 5-palčnim zaslonom. Ne bom se spuščal v podrobnosti tega, saj smo to že velikokrat zajeli. Naslednje članke si lahko preberete -
- Uvod v Raspberry Pi
- Povezava 5-palčnega zaslona z Raspberry Pi
Uporabljamo Raspberry Pi 3 B + z operacijskim sistemom Debian Buster. Morda bi bilo dobro, če bi lahko uporabili Pi 4, in dodali tudi nekatere možnosti hlajenja, kot so hladilnik ali ventilator, ker sem opazil, da je temperatura dosegla skoraj 70 * C. Do zdaj nisem upošteval nobenega postopka hlajenja in moja nastavitev je videti tako -
Namestitev OpenCV in drugih knjižnic na Raspberry Pi
Naslednji korak je namestitev OpenCV na Raspberry Pi. Prej smo že razpravljali o tem, kako sestaviti OpenCV na Raspberry pi.
- Namestitev OpenCV na Raspberry Pi
- Uvod v OpenCV
Lahko sledite zgornji povezavi in prevedete OpenCV s pomočjo Cmake ali pa ga preprosto namestite z metodo apt-get. Priporočam pozneje, če se ne ukvarjate z zelo resnimi programi OpenCV. Za namestitev OpenCV sem uporabil naslednje ukaze.
sudo apt posodobitev sudo apt namestitev python3-opencv
V našem programu bomo uporabili tudi knjižnico "cvui" za ustvarjanje osnovnega uporabniškega vmesnika z dvema gumboma, ki nam omogočata navigacijo med štirimi zasloni. Če želite namestiti cvui, sledite spodnjemu ukazu.
Python3 pip namesti cvui
Z nameščenima obema paketoma lahko pridemo v glavni program. Prepričajte se, da oba nameščena paketa delujeta in jih poskusite uvoziti iz ukaznega terminala Pi.
Programiranje Raspberry Pi za pretakanje RTSP videa s CCTV
Celoten program za ta projekt najdete na koncu te strani. Razlaga istega je naslednja. Program začnemo z vključitvijo zahtevanih datotek glave.
uvoz cv2 uvoz cvui
Naslednji del programa zahteva nekaj urejanja. Vnesti morate uporabniško ime in geslo za svoj DVR. Za 5-palčni zaslon sta širina in višina 800 oziroma 480, zato smo vnesli enako.
rtsp_username = "admin" rtsp_password = "aswinth347653" width = 800 height = 480 cam_no = 1
Nadaljujemo s funkcijo, imenovano ustvariti kamero, ki jo bomo uporabili vsakič, ko spremenimo številko kamere, ki si jo je treba ogledati.
def create_camera (channel): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@ 192.168.29.100: 554 / Streaming / kanali /" + kanal + "02" cap = cv2.VideoCapture () cap.open (rtsp) cap.set (3, 640) # ID številka za širino je 3 cap.set (4, 480) # ID številka za višino je 480 cap.set (10, 100) # ID številka za svetlost je 10qq povratna kapa
V glavni zanki while imamo naš program za branje okvirja iz naprave za zajem in pretvorbo v celozaslonski način. Prikazno okno v našem programu bo poklicano kot zaslon.
success, current_cam = cam.read () dim = (širina, višina) 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)
Sledi koda za dva gumba, ki bosta postavljena na zaslon. Ukaz cvui.button se uporablja za postavitev gumba na želeno mesto, ukaz cvui.mouse pa za zaznavanje klika miške. Imamo dve , če izkazi za dva gumba, če je gumb kliknili je ustrezna , če bo izjava izvedena.
if (cvui.button (Full_frame, širina - 100, višina - 40, "Naprej") in cvui.mouse (cvui.CLICK)): print ("Pritisnjen naslednji gumb") cvui.init ('screen') cam_no = cam_no +1 če (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) if (cvui.button (Full_frame, širina - 200, višina - 40, "Nazaj") in cvui.mouse (cvui. KLIK)): print ("Pritisnjen prejšnji gumb") cvui.init ('screen') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Znotraj stavka if na podlagi gumba bodisi povečamo ali zmanjšamo število cam_no, nato pa izbrišemo obstoječo kamero in z uporabo zgoraj omenjene funkcije ustvarimo novo kamero. Upoštevajte tudi, da mora cvui.init vsakič poklicati, da osveži zaslon uporabniškega vmesnika.
Zadnji del kode je prikaz okvira kot izhoda in za izhod iz izhodnega zaslona, ko pritisnete q. Samo čakamo na pritisk tipke in če je tipka 'q', bomo uničili vsa okna.
cv2.imshow ('screen', Full_frame) if cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Testiranje pregledovalnika CCTV Raspberry Pi
Testiranje kode je precej enostavno, vklopite pi in zaženite kodo python, navedeno na dnu te strani. Prepričajte se, da ste vnesli prave poverilnice za delovanje povezave RTSP. Če želite biti na varnem, lahko poskusite uporabiti tudi predvajalnik VLC na Pi, ki je vnaprej nameščen v operacijskem sistemu Buster.
Če deluje na VLC, smo lahko prepričani, da je naš pi povezan v isto omrežje in povezava RTSP deluje, kot bi morala. Nato odprite program na dnu te strani in ga zaženite s katerim koli python IDE. Če ste vnesli poverilnice pravilno, boste videli naslednji zaslon. Kateri prikazuje prikaz kamere v živo z dvema gumboma na dnu.
Ker ima zaslon TFT zaslon na dotik, se lahko preprosto dotaknete gumba "prejšnji" in "naslednji", da se premaknete na naslednjo kamero. Program je napisan tako, da se vrti med prvimi štirimi kamerami, zato ga lahko enostavno spremenite, če je na vaš DVR priključenih več kot 4 kamere.
Celotno delovanje tega projekta najdete v spodnjem videoposnetku. Upam, da ste uživali v vadnici in se naučili kaj koristnega, če imate kakršna koli vprašanja, jih pustite v oddelku za komentarje ali pa uporabite naše forume, da objavite svoje druge zahteve Prav tako nameravam tej nastavitvi dodati funkcijo zaznavanja gibanja in shranjevanja videa, zato bodite pozorni tudi na to.