- Pregătirea DVR-ului pentru streaming RTSP
- Pregătirea Raspberry Pi
- Instalarea OpenCV și a altor biblioteci pe Raspberry Pi
- Programare Raspberry Pi pentru streaming video RTSP din CCTV
- Testarea Raspberry Pi CCTV Viewer
Majoritatea clădirilor comerciale și de la locul de muncă au astăzi un sistem de supraveghere CCTV instalat pentru a monitoriza activitățile. Dar de multe ori este greu pentru autoritatea sau personalul de securitate în cauză să monitorizeze continuu fluxul live al tuturor camerelor pentru a căuta activități suspecte. Odată cu viziunea pe computer și învățarea automată avansează într-o fază rapidă, este timpul să ne facem mai inteligente sistemele CCTV. În acest articol, vom discuta despre cum să obțineți fluxul video de pe un DVR existent (cum ar fi Hikvision DVR) prin streaming RTSP cu Raspberry pi folosind Python și OpenCV. Odată ce obținem acest lucru, vom putea profita de puterea OpenCV pe aceste fluxuri video pentru a detecta un anumit obiect, a citi plăcuța de înmatriculare a vehiculului, recunoașterea feței și ce nu!
Pentru acest tutorial, voi folosi un DVR CCTV cu 4 canale Hikvision care este deja instalat în clădire. Vom transmite în flux toate cele 4 ecrane ale camerei către Raspberry și le vom afișa pe un ecran tactil de 5 inci, unde utilizatorul se poate deplasa între fiecare canal, după cum este necesar. Știu acest lucru nu prea mult, având în vedere puterea OpenCV și am planuri să-l extind cu detecția mișcării, alertă video cu claritate, urmărirea persoanei etc.
Pregătirea DVR-ului pentru streaming RTSP
Înainte de a ne scufunda în hardware-ul raspberry pi și în codul python, este important să verificăm dacă DVR acceptă RTSP și cum să îl accesăm. Mi-am petrecut majoritatea timpului blocat aici, deoarece procedura pare să difere pentru fiecare tip de DVR și trebuie să faci și multe hituri și să încerci. Dar odată ce îți dai seama de asta, de fiecare dată funcționează ca un farmec.
În primul rând, asigurați-vă că cunoașteți numele de utilizator și parola sistemului DVR și că este conectat la internet. De asemenea, în acest tutorial, voi transmite RTSP doar dintr-o rețea locală, dacă aveți un IP static, puteți face redirecționarea porturilor și puteți urmări același lucru și pentru alte rețele. Dar, în ceea ce privește acest tutorial, vom face totul în rețeaua locală.
Pasul 1: Găsiți adresa IP a DVR-ului dvs. Odată ce DVR-ul este conectat la Internet, i se va atribui propria adresă IP. Puteți găsi această adresă IP fie de pe pagina de configurare a routerului, fie de pe ecranul DVR în sine (presupunând că aveți un monitor conectat la DVR). Adresa IP a routerului meu a fost http://192.168.11.110/ (modificată din motive de siguranță)
Pasul 2: Deschideți orice browser web la alegere și introduceți adresa IP și apăsați pe Enter. Veți fi condus la pagina de conectare DVR. Unde trebuie să introduceți numele de utilizator (al meu este modificat) și parola pentru DVR. Numele de utilizator implicit va fi admin, dar parola trebuie să o cunoașteți. Ecranul meu de conectare pentru DVR este prezentat mai jos, este posibil ca aspectul dvs. să difere.
Pasul 3: După o autentificare reușită, căutați numărul portului RTSP pe DVR, de cele mai multe ori, valoarea implicită va fi 554, dar s-ar putea schimba. În timp ce sunteți aici, jucați-vă cu setările de configurare pentru a verifica dacă există o opțiune pentru a activa RTSP, dacă nu, puteți să o ignorați. Trebuie să petreceți ceva timp aici, deoarece procedura este diferită în funcție de DVR.
Pasul 4: Pregătiți-vă linkul RTSP, linkul RTSP de bază va avea următorul format-
rtsp: //
Din nou, depinde de tipul de DVR, puteți utiliza google pentru a găsi cel care va funcționa pentru dvs. Cel pentru care a funcționat avea formatul de mai jos, puteți încerca și cu acesta-
rtsp: //
Unde
rtsp: // admin: [email protected]: 554 / Streaming / Canale / 202 /
Pasul 5: Redați fluxul pe VLC pentru a vă asigura că conexiunea RTSP funcționează. Instalați VLC pe un computer conectat la aceeași rețea ca DVR, lansați-l și apăsați Ctrl + N pentru streaming în rețea. Introduceți adresa URL așa cum se arată mai jos și apăsați OK.
Dacă legătura RTSP funcționează așa cum ar trebui, ar trebui să vedeți un flux live al CCTV-ului dvs. pe playerul VLC, așa cum se arată mai jos. Dacă aruncă o eroare, atunci trebuie să vă dați seama de legătura corectă.
După ce ați făcut acest lucru, nu mai trebuie să vorbim despre DVR-ul nostru, pentru a continua cu Raspberry pi.
Pregătirea Raspberry Pi
În continuare, trebuie să ne configurăm raspberry pi cu afișajul de 5 inci. Nu am de gând să intru în detaliile acestui lucru, deoarece am discutat deja atât de multe ori. Puteți citi următoarele articole pentru îndrumare-
- Noțiuni introductive despre Raspberry Pi
- Interfațarea afișajului de 5 inci cu Raspberry Pi
Folosim un Raspberry Pi 3 B + cu sistemul de operare Debian Buster care rulează în el. Ar putea fi, de asemenea, o idee bună să utilizați Pi 4 dacă puteți și adăugați, de asemenea, unele opțiuni de răcire, cum ar fi un radiator sau un ventilator, deoarece am observat că temperatura ajunge la aproape 70 * C. Nu am urmat nicio procedură de răcire de acum și configurarea mea arată așa -
Instalarea OpenCV și a altor biblioteci pe Raspberry Pi
Următorul pas este instalarea OpenCV pe Raspberry Pi. Am discutat anterior cum să compilăm OpenCV pe Raspberry pi.
- Instalarea OpenCV pe Raspberry Pi
- Noțiuni introductive despre OpenCV
Puteți urma linkul de mai sus și compila OpenCV folosind Cmake sau pur și simplu instalați-l cu o metodă apt-get. Aș recomanda mai târziu dacă nu sunteți în programare OpenCV foarte serioasă. Am folosit următoarele comenzi pentru a instala OpenCV.
sudo apt update sudo apt install python3-opencv
În programul nostru, vom folosi, de asemenea, biblioteca „cvui” pentru a crea o interfață de bază cu două butoane care ne permit să navigăm între cele patru ecrane. Pentru a instala cvui urmați comanda de mai jos.
Python3 pip instalează cvui
Cu ambele pachete instalate, putem intra în programul principal. Asigurați-vă că ambele pachete instalate funcționează, cumpărați, încercând să le importați de la terminalul de comandă Pi.
Programare Raspberry Pi pentru streaming video RTSP din CCTV
Programul complet pentru acest proiect poate fi găsit la sfârșitul acestei pagini. Explicația acestora este următoarea. Începem programul prin includerea fișierelor antet necesare.
import cv2 import cvui
Partea următoare a programului necesită o editare. Trebuie să introduceți numele de utilizator și parola DVR-ului dvs. Pentru un afișaj de 5 inch, lățimea și înălțimea sunt 800 și respectiv 480, așa că am introdus același lucru.
rtsp_username = "admin" rtsp_password = "aswinth347653" lățime = 800 înălțime = 480 cam_no = 1
Mai departe, avem o funcție numită creează o cameră care va fi utilizată de fiecare dată când schimbăm numărul camerei care trebuie vizualizat.
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) set cap (3, 640) # Număr ID pentru lățime este 3 set cap (4, 480) # Număr ID pentru înălțime este 480 set set (10, 100) # Număr ID pentru luminozitate este 10qq capac de întoarcere
În interiorul buclei principale while, avem programul nostru pentru a citi un cadru de pe dispozitivul de captură și a-l converti în ecran complet. Fereastra de afișare din programul nostru va fi numită ca ecran.
succes, cam_curent = cam.read () dim = (lățime, înălțime) Full_frame = cv2.resize (current_cam, dim, interpolare = cv2.INTER_AREA) cv2.namedWindow ('ecran', cv2.WINDOW_NORMAL) cv2.setWindowProperty ('ecran ', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
Urmează că avem codul pentru două butoane care vor fi plasate pe ecran. Comanda cvui.button este utilizată pentru a plasa butonul într-un loc necesar, iar comanda cvui.mouse este utilizată pentru a detecta clicul mouse-ului. Avem două instrucțiuni if pentru două butoane dacă se face clic pe buton, instrucțiunea if respectivă va fi executată.
if (cvui.button (Full_frame, width - 100, height - 40, "Next") și cvui.mouse (cvui.CLICK)): print ("Next Button Pressed") cvui.init ('ecran') cam_no = cam_no +1 if (cam_no> 4): cam_no = 1 del cam cam = create_camera (str (cam_no)) if (cvui.button (Full_frame, width - 200, height - 40, "Previous") și cvui.mouse (cvui. CLICK)): print ("Butonul anterior apăsat") cvui.init ('ecran') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
În cadrul declarației if , pe baza butonului, fie creștem, fie micșorăm numărul cam_no și apoi ștergem camera existentă și creăm o cameră nouă folosind funcția pe care am discutat-o mai sus. De asemenea, rețineți că cvui.init trebuie să apeleze de fiecare dată pentru a reîmprospăta ecranul UI.
Ultima parte a codului este de a afișa cadrul ca ieșire și pentru a ieși din ecranul de ieșire atunci când este apăsat q. Așteptăm doar o apăsare de tastă și dacă cheia este „q”, vom distruge toate ferestrele.
cv2.imshow ('ecran', Full_frame) dacă cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Testarea Raspberry Pi CCTV Viewer
Testarea codului este destul de simplă, porniți pi și lansați codul python dat în partea de jos a acestei pagini. Asigurați-vă că ați introdus acreditările corecte pentru ca linkul RTSP să funcționeze. Dacă doriți să fiți în siguranță, puteți încerca, de asemenea, să folosiți playerul VLC de pe Pi, care este preinstalat pe sistemul de operare Buster.
Dacă funcționează pe VLC, atunci putem fi siguri că pi-ul nostru este conectat la aceeași rețea și că link-ul RTSP funcționează așa cum ar trebui. Apoi deschideți programul dat în partea de jos a acestei pagini și lansați-l folosind orice IDE python. Dacă acreditările sunt introduse corect, veți vedea următorul ecran. Care arată alimentarea camerei live cu două butoane în partea de jos.
Deoarece ecranul are un ecran tactil TFT, puteți atinge pur și simplu butoanele „anterioare” și „următoare” pentru a trece la următoarea cameră. Programul este scris în buclă între primele patru camere, îl puteți modifica cu ușurință dacă există mai mult de 4 camere conectate la DVR.
Funcționarea completă a acestui proiect poate fi găsită în videoclipul legat mai jos. Sper că ți-a plăcut tutorialul și ai învățat ceva util dacă ai întrebări, lasă-le în secțiunea de comentarii sau poți folosi și forumurile noastre pentru a posta celelalte cereri. De asemenea, intenționez să adaug funcția de detectare a mișcării și salvare video la această configurație, așa că rămâneți la curent și pentru asta.