- Priprema DVR-a za RTSP streaming
- Priprema vašeg Raspberry Pi
- Instaliranje OpenCV-a i ostalih knjižnica na Raspberry Pi
- Programiranje Raspberry Pi za strujanje RTSP videa s CCTV-a
- Testiranje Raspberry Pi CCTV preglednika
Većina radnih mjesta i komercijalnih zgrada danas ima ugrađen CCTV nadzorni sustav za praćenje aktivnosti. Ali često je teško dotičnim vlastima ili osobama iz sigurnosnih službi neprestano nadgledati feed svih kamera u potrazi za sumnjivim aktivnostima. Uz brzi napredak računalnog vida i strojnog učenja, krajnje je vrijeme da naše CCTV sustave učinimo pametnijima. U ovom ćemo članku razgovarati o tome kako dobiti video feed sa postojećeg DVR-a (poput Hikvision DVR-a) putem RTSP streaminga s Raspberry pi koristeći Python i OpenCV. Jednom kad to dobijemo, moći ćemo iskoristiti snagu OpenCV-a na tim video feedovima za otkrivanje određenog objekta, čitanje tablice s brojem vozila, prepoznavanje lica i što još ne!
Zarad ovog vodiča koristit ću Hikvision 4-kanalni CCTV DVR koji je već instaliran u zgradi. Preusmjerit ćemo sva 4 zaslona fotoaparata na Raspberry i prikazati ga na 5-inčnom zaslonu osjetljivom na dodir gdje se korisnik može prebacivati između svakog kanala prema potrebi. Ne znam to puno, s obzirom na snagu OpenCV-a, i planiram ga povećati pomoću detekcije pokreta, video upozorenja za bugler, praćenja osoba itd., Ali ostavimo sve to za drugi vodič.
Priprema DVR-a za RTSP streaming
Prije nego što zaronimo u Raspberry Pi hardver i python kod, važno je provjeriti podržava li DVR RTSP i kako mu pristupiti. Većinu svog vremena proveo sam zaglavljen ovdje, jer se čini da se postupak razlikuje za svaku vrstu DVR-a, a morate napraviti i puno pogodaka i pokušati. Ali kad jednom shvatite, to svaki put djeluje poput šarma.
Prvo, provjerite znate li korisničko ime i lozinku za svoj DVR sustav i je li povezan s internetom. Također u ovom uputstvu, RTSP ću prenositi samo s lokalne mreže, ako imate statičnu IP adresu, možete prosljeđivati priključke i slijediti iste za druge mreže. Što se tiče ovog vodiča, radit ćemo sve unutar lokalne mreže.
Korak 1: Pronađite IP adresu vašeg DVR-a. Nakon što se DVR poveže s Internetom, dodijelit će mu se vlastita IP adresa. Ovu IP adresu možete pronaći na stranici s konfiguracijom usmjerivača ili na samom zaslonu DVR-a (pod pretpostavkom da imate monitor povezan s DVR-om). IP adresa mog usmjerivača bila je http://192.168.11.110/ (promijenjena iz sigurnosnih razloga)
Korak 2: Otvorite bilo koji web preglednik po vašem izboru i unesite IP adresu i pritisnite Enter. Bit ćete preusmjereni na stranicu za prijavu DVR-a. Gdje morate unijeti korisničko ime (moje je promijenjeno) i lozinku za vaš DVR. Zadano korisničko ime bit će admin, ali lozinka koju morate znati. Zaslon za prijavu za DVR prikazan je dolje, vaš izgled može se razlikovati.

Korak 3: Nakon uspješne prijave, potražite broj priključka RTSP na svom DVR-u, većinom će zadana vrijednost biti 554, ali možda će se promijeniti. Dok ste ovdje, igrajte se s postavkama konfiguracije kako biste provjerili postoji li opcija za omogućavanje RTSP-a, ako ne, možete je preskočiti. Ovdje morate provesti neko vrijeme jer se postupak razlikuje od DVR-a.

Korak 4: Pripremite svoj RTSP link, osnovni RTSP link bit će u sljedećem formatu-
rtsp: //
Opet, ovisi o vrsti DVR-a, pomoću Googlea možete pronaći onaj koji će vam odgovarati. Onaj za koji je radio imao je donji format, možete i pokušati s ovim -
rtsp: //
Gdje
rtsp: // admin: [email protected]: 554 / Streaming / Channels / 202 /
Korak 5: Reproducirajte stream na VLC-u kako biste bili sigurni da vaša RTSP veza radi. Instalirajte VLC na računalo koje je povezano na istu mrežu kao i DVR, pokrenite ga i pritisnite Ctrl + N za mrežno strujanje. Unesite URL kao što je prikazano dolje i pritisnite u redu.

Ako veza RTSP radi kako treba, trebali biste vidjeti prijenos uživo svog CCTV-a na VLC uređaju, kao što je prikazano dolje. Ako izbaci pogrešku, morate shvatiti točnu vezu.

Nakon toga više ne trebamo razgovarati o našem DVR-u kako bismo mogli nastaviti s našom Raspberry pi.
Priprema vašeg Raspberry Pi
Dalje, moramo postaviti naš Raspberry Pi s 5-inčnim zaslonom. Neću ulaziti u detalje toga jer smo to već puno puta obrađivali. Sljedeće članke možete pročitati kao smjernice -
- Početak rada s Raspberry Pi
- Povezivanje 5-inčnog zaslona s Raspberry Pi
Koristimo Raspberry Pi 3 B + s operativnim sustavom Debian Buster OS. Mogla bi biti dobra ideja koristiti Pi 4 ako možete, a dodati i neke mogućnosti hlađenja poput hladnjaka ili ventilatora, jer sam primijetio da temperatura doseže gotovo 70 * C. Do sada nisam slijedio nijedan postupak hlađenja, a moja postavka izgleda ovako-

Instaliranje OpenCV-a i ostalih knjižnica na Raspberry Pi
Sljedeći je korak instaliranje OpenCV-a na Raspberry Pi. Prethodno smo razgovarali o tome kako kompilirati OpenCV na Raspberry pi.
- Instaliranje OpenCV-a na Raspberry Pi
- Početak rada s OpenCV-om
Možete slijediti gornju vezu i kompilirati OpenCV pomoću Cmake-a ili ga jednostavno instalirati metodom apt-get. Preporučio bih kasnije, ako se ne bavite vrlo ozbiljnim OpenCV programiranjem. Koristio sam sljedeće naredbe za instalaciju OpenCV-a.
sudo apt ažuriranje sudo apt instalacija python3-opencv
U našem programu koristit ćemo i biblioteku "cvui" za stvaranje osnovnog korisničkog sučelja s dva gumba koja nam omogućuju navigaciju između četiri zaslona. Da biste instalirali cvui, slijedite naredbu u nastavku.
Python3 pip instalirati cvui
S instalirana oba paketa možemo ući u glavni program. Provjerite rade li oba instalirana paketa, pokušajte ih uvesti s naredbenog terminala Pi.

Programiranje Raspberry Pi za strujanje RTSP videa s CCTV-a
Kompletni program za ovaj projekt nalazi se na kraju ove stranice. Objašnjenje istog je sljedeće. Program započinjemo uključivanjem potrebnih datoteka zaglavlja.
uvoz cv2 uvoz cvui
Sljedeći dio programa zahtijeva malo uređivanja. Morate unijeti korisničko ime i lozinku svog DVR-a. Za 5-inčni zaslon širina i visina su 800, odnosno 480, pa smo unijeli isto.
rtsp_username = "admin" rtsp_password = "aswinth347653" širina = 800 visina = 480 cam_no = 1
Nastavljajući dalje, imamo funkciju koja se naziva stvaranje kamere koja će se koristiti svaki put kad promijenimo broj kamere koji se mora pregledati.
def create_camera (channel): rtsp = "rtsp: //" + rtsp_username + ":" + rtsp_password + "@ 192.168.29.100: 554 / Streaming / channels /" + channel + "02" cap = cv2.VideoCapture () cap.open (rtsp) cap.set (3, 640) # ID broj za širinu je 3 cap.set (4, 480) # ID broj za visinu je 480 cap.set (10, 100) # ID broj za svjetlinu je 10qq povratna kapa
Unutar glavne while petlje imamo svoj program za očitavanje okvira s uređaja za hvatanje i pretvaranje u puni zaslon. Prozor zaslona u našem programu nazvat će se zaslonom.
uspjeh, trenutna_kamera = cam.read () dim = (širina, visina) 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)
Nakon toga imamo kod za dva gumba koja će se postaviti na zaslon. Naredba cvui.button koristi se za postavljanje gumba na traženo mjesto, a naredba cvui.mouse za otkrivanje klika miša. Imamo dva stavka if za dva gumba ako se klikne gumb, izvršit će se odgovarajući if izraz.
if (cvui.button (Full_frame, width - 100, height - 40, "Next") i cvui.mouse (cvui.CLICK)): print ("Pritisnuti sljedeći gumb") cvui.init ('screen') cam_no = cam_no +1 ako (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) if (cvui.button (Full_frame, širina - 200, visina - 40, "Prethodno") i cvui.mouse (cvui. KLIKNITE)): print ("Pritisnuto prethodno dugme") cvui.init ('zaslon') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Unutar naredbe if , na temelju gumba, povećavamo ili smanjujemo broj cam_no, a zatim brišemo postojeću kameru i stvaramo novu kameru pomoću funkcije o kojoj smo gore raspravljali. Također imajte na umu da cvui.init mora nazvati svaki put da osvježi zaslon korisničkog sučelja.
Završni dio koda je prikaz okvira kao izlaza i za izlaz s izlaznog zaslona kad se pritisne q. Čekamo samo pritiskanje tipke i ako je tipka 'q', uništit ćemo sve prozore.
cv2.imshow ('screen', Full_frame) if cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Testiranje Raspberry Pi CCTV preglednika
Testiranje koda je prilično izravno, uključite pi i pokrenite python kôd naveden na dnu ove stranice. Provjerite jeste li unijeli ispravne vjerodajnice za rad veze RTSP. Ako želite biti na sigurnoj strani, također možete pokušati koristiti VLC player na Pi koji je unaprijed instaliran na buster OS-u.

Ako radi na VLC-u, možemo biti sigurni da su se naši pi povezani na istu mrežu i RTSP veza rade kako treba. Zatim otvorite program naveden na dnu ove stranice i pokrenite ga pomoću bilo kojeg python IDE-a. Ako su vjerodajnice ispravno unesene, vidjet ćete sljedeći zaslon. Koji prikazuje feed kamere uživo s dva gumba na dnu.

Budući da zaslon ima TFT zaslon osjetljiv na dodir, možete jednostavno dodirnuti tipke "prethodni" i "sljedeći" da biste prešli na sljedeću kameru. Program je napisan da se petlja između prve četiri kamere, a lako ga možete izmijeniti ako je na vaš DVR priključeno više od 4 kamere.
Cjelovit rad ovog projekta možete pronaći u video linku dolje. Nadam se da ste uživali u vodiču i naučili nešto korisno ako imate pitanja, ostavite ih u odjeljku za komentare ili također možete koristiti naše forume da objavite svoje druge upite. Također, planiram u ovu postavku dodati značajku otkrivanja pokreta i spremanja video zapisa, pa pratite i to.
