- Príprava DVR na streamovanie RTSP
- Príprava vášho Raspberry Pi
- Inštalácia OpenCV a ďalších knižníc na Raspberry Pi
- Programovanie Raspberry Pi na streamovanie videa RTSP z CCTV
- Testovanie CCTV prehliadača Raspberry Pi
Väčšina pracovísk a komerčných budov má dnes nainštalovaný systém sledovania CCTV na sledovanie činností. Dotknutý orgán alebo pracovníci bezpečnostnej služby však často ťažko sledujú živý prenos všetkých kamier a hľadajú podozrivú aktivitu. Pretože počítačové videnie a strojové učenie postupujú v rýchlej fáze, je načase, aby sme naše CCTV systémy inteligentnejšie. V tomto článku budeme diskutovať o tom, ako získať video z existujúceho DVR (napríklad Hikvision DVR) prostredníctvom RTSP streamovania s Raspberry pi pomocou Pythonu a OpenCV. Akonáhle to dostaneme, budeme schopní využiť silu OpenCV na týchto video kanáloch na detekciu konkrétneho objektu, prečítanie tabuľky s evidenčným číslom vozidla, rozpoznávania tváre a čo nie!
V rámci tohto tutoriálu budem používať 4-kanálový CCTV DVR Hikvision, ktorý je už v budove nainštalovaný. Streamujeme všetky 4 obrazovky kamier na Raspberry a zobrazujeme ich na 5-palcovom dotykovom displeji, kde môže používateľ podľa potreby prepínať medzi jednotlivými kanálmi. Nepoznám to veľa, vzhľadom na silu OpenCV a mám plány na jeho zväčšenie pomocou detekcie pohybu, upozornenia na bugler, sledovanie osôb atď., Ale to všetko nechajme na ďalší tutoriál.
Príprava DVR na streamovanie RTSP
Predtým, ako sa ponoríme do hardvéru a kódu pythonu maliny pi, je dôležité skontrolovať, či DVR podporuje RTSP a ako k nim získať prístup. Strávil som tu väčšinu času, pretože sa zdá, že postup sa líši pre každý typ DVR a musíte urobiť a veľa zásahov a pokusov. Ale keď na to prídete, zakaždým to funguje ako kúzlo.
Najskôr sa uistite, že poznáte užívateľské meno a heslo vášho DVR systému, ktorý je pripojený k internetu. Aj v tomto tutoriáli budem streamovať RTSP iba z lokálnej siete, ak máte statickú IP, môžete robiť presmerovanie portov a postupovať rovnako pre ostatné siete. Pokiaľ však ide o tento výukový program, budeme robiť všetko v miestnej sieti.
Krok 1: Vyhľadajte IP adresu vášho DVR. Akonáhle je DVR pripojený k internetu, bude mu pridelená jeho vlastná IP adresa. Túto adresu IP môžete nájsť buď na konfiguračnej stránke smerovača, alebo na samotnej obrazovke DVR (za predpokladu, že máte k DVR pripojený monitor). IP adresa môjho smerovača bola http://192.168.11.110/ (zmenená z bezpečnostných dôvodov)
Krok 2: Otvorte ľubovoľný webový prehliadač podľa vášho výberu, zadajte adresu IP a stlačte kláves Enter. Dostanete sa na prihlasovaciu stránku DVR. Kde musíte zadať užívateľské meno (moje sa zmenilo) a heslo pre vaše DVR. Predvolené používateľské meno bude admin, ale heslo, ktoré musíte poznať. Moja prihlasovacia obrazovka pre DVR je zobrazená nižšie, váš vzhľad sa môže líšiť.
Krok 3: Po úspešnom prihlásení vyhľadajte číslo portu RTSP na vašom DVR, predvolená hodnota bude väčšinou 554, ale môže sa zmeniť. Keď ste tu, pohrajte sa s konfiguračnými nastaveniami a skontrolujte, či existuje možnosť povoliť RTSP, ak nie, môžete ju preskočiť. Musíte tu stráviť nejaký čas, pretože postup sa líši podľa DVR.
Krok 4: Pripravte si odkaz RTSP, základný odkaz RTSP bude v nasledujúcom formáte -
rtsp: //
Opäť záleží na type DVR, pomocou google si môžete nájsť ten, ktorý vám bude vyhovovať. Ten, pre ktorý pracoval, mal formát uvedený nižšie, môžete tiež vyskúšať tento -
rtsp: //
Kde
rtsp: // admin: [email protected]: 554 / Streamovanie / Kanály / 202 /
Krok 5: Prehrajte stream na VLC a uistite sa, že vaše pripojenie RTSP funguje. Nainštalujte VLC na počítač, ktorý je pripojený k rovnakej sieti ako DVR, spustite ho a stlačte Ctrl + N pre sieťové streamovanie. Zadajte adresu URL, ako je uvedené nižšie, a stlačte tlačidlo OK.
Ak prepojenie RTSP funguje tak, ako má, mali by ste vidieť priamy prenos vášho CCTV na prehrávači VLC, ako je uvedené nižšie. Ak spôsobí chybu, musíte zistiť správny odkaz.
Keď to urobíme, už nebudeme musieť hovoriť o našich rekordéroch DVR, vďaka ktorým začneme s naším Raspberry pi.
Príprava vášho Raspberry Pi
Ďalej musíme nastaviť našu malinovú pí na 5-palcovom displeji. Nebudem sa tým viac zaoberať, pretože sme sa o tom už mnohokrát rozprávali. Nasledujúce články si môžete prečítať ako návod.
- Začíname s Raspberry Pi
- Prepojovací 5-palcový displej s Raspberry Pi
Používame Raspberry Pi 3 B + s bežiacim OS Debian Buster. Môže byť tiež dobrý nápad použiť Pi 4, ak môžete, a tiež pridať nejaké možnosti chladenia, ako je chladič alebo ventilátor, pretože som si všimol, že teplota dosahuje takmer 70 * C. Odteraz som nepostupoval podľa žiadneho postupu ochladzovania a moje nastavenie vyzerá takto -
Inštalácia OpenCV a ďalších knižníc na Raspberry Pi
Ďalším krokom je inštalácia OpenCV na Raspberry Pi. Predtým sme diskutovali o tom, ako zostaviť OpenCV na Raspberry pi.
- Inštalácia OpenCV na Raspberry Pi
- Začíname s OpenCV
Môžete postupovať podľa vyššie uvedeného odkazu a zostaviť OpenCV pomocou Cmake alebo ho jednoducho nainštalovať pomocou metódy apt-get. Neskôr by som odporučil, ak nemáte veľmi vážne programovanie OpenCV. Na inštaláciu OpenCV som použil nasledujúce príkazy.
sudo apt aktualizácia sudo apt nainštalovať python3-opencv
V našom programe tiež použijeme knižnicu „cvui“ na vytvorenie základného používateľského rozhrania s dvoma tlačidlami, ktoré nám umožňujú prechádzať medzi štyrmi obrazovkami. Pri inštalácii cvui postupujte podľa nižšie uvedeného príkazu.
Python3 pip nainštalujte cvui
S obidvoma nainštalovanými balíkmi sa môžeme dostať do hlavného programu. Uistite sa, že obidva nainštalované balíčky fungujú, a pokúste sa ich importovať z príkazového terminálu Pi.
Programovanie Raspberry Pi na streamovanie videa RTSP z CCTV
Kompletný program tohto projektu sa nachádza na konci tejto stránky. Vysvetlenie toho istého je nasledujúce. Program začíname zahrnutím požadovaných hlavičkových súborov.
import cv2 import cvui
Ďalšia časť programu vyžaduje určité úpravy. Musíte zadať užívateľské meno a heslo vášho DVR. Pre 5-palcový displej sú šírka a výška 800, respektíve 480, takže sme zadali to isté.
rtsp_username = "admin" rtsp_password = "aswinth347653" width = 800 height = 480 cam_no = 1
Ďalej máme funkciu nazvanú vytvoriť kameru, ktorá sa použije pri každej zmene čísla kamery, ktorú je potrebné zobraziť.
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 číslo pre šírku je 3 cap.set (4, 480) # ID číslo pre výšku je 480 cap.set (10, 100) # ID číslo pre jas je 10qq spätný uzáver
Vo vnútri hlavnej slučky while máme náš program na načítanie snímky zo snímacieho zariadenia a ich prevedenie na celú obrazovku. Okno displeja v našom programe sa bude nazývať obrazovka.
success, current_cam = cam.read () dim = (width, height) Full_frame = cv2.resize (current_cam, dim, interpolation = cv2.INTER_AREA) cv2.namedWindow ('obrazovka', cv2.WINDOW_NORMAL) cv2.setWindowProperty ('obrazovka ', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
Nasleduje kód pre dve tlačidlá, ktoré budú umiestnené na obrazovke. Príkaz cvui.button slúži na umiestnenie tlačidla na požadované miesto a príkaz cvui.mouse na detekciu kliknutia myšou. Máme dva ak závierka za dva gombíky, ak kliknete na tlačidlo, je príslušný v prípade vyhlásenia bude vykonaný.
if (cvui.button (Full_frame, width - 100, height - 40, "Next") and cvui.mouse (cvui.CLICK)): print ("Next Button Pressed") cvui.init ('screen') 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") a cvui.mouse (cvui. CLICK)): print ("Stlačené predchádzajúce tlačidlo") cvui.init ('obrazovka') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Vnútri ak je vyhlásenie, založené na tlačidlo my buď zvýšiť alebo znížiť cam_no počítať a odstrániť existujúce kameru a vytvoriť novú kameru pomocou funkcie sme diskutovali vyššie. Upozorňujeme tiež, že web cvui.init musí volať vždy, aby obnovil obrazovku používateľského rozhrania.
Záverečnou časťou kódu je zobrazenie rámca ako výstupu a pre výstup z výstupnej obrazovky po stlačení q. Čakáme iba na stlačenie klávesu a ak je klávesa „q“, zničíme všetky okná.
cv2.imshow ('screen', Full_frame) if cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Testovanie CCTV prehliadača Raspberry Pi
Testovanie kódu je celkom jednoduché, zapnite pí a spustite kód python uvedený v dolnej časti tejto stránky. Uistite sa, že ste zadali správne poverenia, aby odkaz RTSP fungoval. Ak chcete byť na bezpečnej strane, môžete tiež vyskúšať prehrávač VLC na platforme Pi, ktorý je predinštalovaný na operačnom systéme Buster.
Ak to funguje na VLC, potom si môžeme byť istí, že naše pí je pripojené k rovnakej sieti a prepojenie RTSP funguje tak, ako má. Potom otvorte program uvedený v dolnej časti tejto stránky a spustite ho pomocou ľubovoľného IDE pythonu. Ak sú prihlasovacie údaje zadané správne, zobrazí sa nasledujúca obrazovka. Ktorý zobrazuje živý prenos kamery pomocou dvoch tlačidiel v spodnej časti.
Pretože má obrazovka dotykovú obrazovku TFT, môžete sa dotknutím tlačidiel „predchádzajúci“ a „ďalší“ presunúť na ďalší fotoaparát. Program je napísaný do slučky medzi prvými štyrmi kamerami, môžete ho ľahko upraviť, ak sú k vášmu DVR pripojené viac ako 4 kamery.
Kompletné fungovanie tohto projektu nájdete vo videu, na ktoré odkazujete nižšie. Dúfam, že sa vám tutoriál páčil a dozvedeli ste sa niečo užitočné, ak máte nejaké otázky, nechajte ich v sekcii komentárov alebo môžete tiež použiť naše fóra na zverejnenie ďalších otázok. Tiež plánujem do tohto nastavenia pridať funkciu detekcie pohybu a ukladania videa, takže tiež zostaňte naladení.