- Příprava DVR pro streamování RTSP
- Příprava Raspberry Pi
- Instalace OpenCV a dalších knihoven na Raspberry Pi
- Programování Raspberry Pi pro streamování RTSP videa z CCTV
- Testování CCTV prohlížeče Raspberry Pi
Většina pracovišť a komerčních budov má dnes nainstalován monitorovací systém CCTV, který monitoruje aktivity. Dotčené orgány nebo bezpečnostní pracovníci však často obtížně sledují živý přenos všech kamer a hledají podezřelou aktivitu. S počítačovým viděním a strojovým učením postupujícím v rychlé fázi je na čase, abychom naše CCTV systémy chytřejší. V tomto článku budeme diskutovat o tom, jak získat video z existujícího DVR (jako Hikvision DVR) prostřednictvím RTSP streamování s Raspberry pi pomocí Pythonu a OpenCV. Jakmile to získáme, budeme moci využít sílu OpenCV na těchto video kanálech k detekci konkrétního objektu, přečíst poznávací značku vozidla, rozpoznávání tváře a co ne!
V zájmu tohoto tutoriálu budu používat 4kanálový CCTV DVR Hikvision, který je již v budově nainstalován. Budeme streamovat všechny 4 obrazovky fotoaparátu na Raspberry a zobrazovat je na 5palcovém dotykovém displeji, kde může uživatel podle potřeby přepínat mezi jednotlivými kanály. To moc nevím, vzhledem k síle OpenCV a mám plány, jak to rozšířit pomocí detekce pohybu, výstrahy videa s buglerem, sledování osob atd., Ale nechme to všechno pro další výukový program.
Příprava DVR pro streamování RTSP
Než se ponoříme do hardwaru a kódu pythonu maliny pi, je důležité zkontrolovat, zda DVR podporuje RTSP a jak k němu přistupovat. Strávil jsem tu většinu času, protože se zdá, že se postup liší pro každý typ DVR a musíte udělat a spoustu zásahů a pokusů. Ale jakmile na to přijdete, funguje to pokaždé jako kouzlo.
Nejprve se ujistěte, že znáte uživatelské jméno a heslo vašeho systému DVR a je připojen k internetu. Také v tomto tutoriálu budu streamovat RTSP pouze z lokální sítě, pokud máte statickou IP, můžete provádět přesměrování portů a postupovat stejně pro ostatní sítě. Ale co se týče tohoto tutoriálu, budeme dělat všechno uvnitř lokální sítě.
Krok 1: Najděte IP adresu vašeho DVR. Jakmile je DVR připojen k internetu, bude mu přidělena jeho vlastní IP adresa. Tuto adresu IP najdete buď na stránce konfigurace routeru, nebo na samotné obrazovce DVR (za předpokladu, že máte k DVR připojen monitor). IP adresa mého routeru byla http://192.168.11.110/ (změněno z bezpečnostních důvodů)
Krok 2: Otevřete libovolný webový prohlížeč podle vašeho výběru, zadejte IP adresu a stiskněte klávesu Enter. Budete přesměrováni na přihlašovací stránku DVR. Kde musíte zadat uživatelské jméno (moje se změnilo) a heslo pro váš DVR. Výchozí uživatelské jméno bude admin, ale heslo, které musíte znát. Moje přihlašovací obrazovka pro DVR je zobrazena níže, váš vzhled se může lišit.
Krok 3: Po úspěšném přihlášení vyhledejte na svém DVR číslo portu RTSP, výchozí hodnota bude většinou 554, ale může se změnit. Zatímco jste tady, hrajte s nastavením a zkontrolujte, zda existuje možnost povolit RTSP, pokud ne, můžete ji přeskočit. Zde musíte strávit nějaký čas, protože postup se liší podle DVR.
Krok 4: Připravte si odkaz RTSP, základní odkaz RTSP bude v následujícím formátu -
rtsp: //
Opět záleží na typu DVR, můžete použít google a najít ten, který vám bude fungovat. Ten, pro který pracoval, měl níže uvedený formát, můžete také zkusit s tímto -
rtsp: //
Kde
rtsp: // admin: [email protected]: 554 / Streamování / Kanály / 202 /
Krok 5: Přehrajte stream na VLC a ujistěte se, že vaše připojení RTSP funguje. Nainstalujte VLC na počítač, který je připojen ke stejné síti jako DVR, spusťte jej a stiskněte Ctrl + N pro síťové streamování. Zadejte adresu URL, jak je uvedeno níže, a stiskněte OK.
Pokud propojení RTSP funguje tak, jak má, měli byste vidět živý přenos vašeho CCTV na přehrávači VLC, jak je uvedeno níže. Pokud to způsobí chybu, musíte zjistit správný odkaz.
Díky tomu již nebudeme muset mluvit o tom, jak naše DVR umožňuje pokračovat s naší Raspberry pi.
Příprava Raspberry Pi
Dále musíme nastavit naši malinovou pí s 5palcovým displejem. Nebudu se tím zabývat podrobnostmi, protože jsme to už mnohokrát probrali. Následující články si můžete přečíst jako vodítko
- Začínáme s Raspberry Pi
- Propojení 5palcového displeje s Raspberry Pi
Používáme Raspberry Pi 3 B + s běžícím operačním systémem Debian Buster. Může být také dobrý nápad použít Pi 4, pokud můžete, a také přidat některé možnosti chlazení, jako je chladič nebo ventilátor, protože jsem si všiml, že teplota dosahuje téměř 70 * C. Od této chvíle jsem neprovedl žádný postup chlazení a moje nastavení vypadá takto -
Instalace OpenCV a dalších knihoven na Raspberry Pi
Dalším krokem je instalace OpenCV na Raspberry Pi. Dříve jsme diskutovali o tom, jak kompilovat OpenCV na Raspberry pi.
- Instalace OpenCV na Raspberry Pi
- Začínáme s OpenCV
Můžete buď sledovat výše uvedený odkaz a zkompilovat OpenCV pomocí Cmake, nebo jej jednoduše nainstalovat pomocí metody apt-get. Doporučil bych později, pokud nejste příliš vážní programování OpenCV. K instalaci OpenCV jsem použil následující příkazy.
sudo apt aktualizace sudo apt nainstalovat python3-opencv
V našem programu také použijeme knihovnu „cvui“ k vytvoření základního uživatelského rozhraní se dvěma tlačítky, která nám umožní procházet mezi čtyřmi obrazovkami. Chcete-li nainstalovat cvui, postupujte podle níže uvedeného příkazu.
Python3 pip install cvui
S oběma nainstalovanými balíčky se můžeme dostat do hlavního programu. Ujistěte se, že oba nainstalované balíčky fungují, a pokuste se je importovat z příkazového terminálu Pi.
Programování Raspberry Pi pro streamování RTSP videa z CCTV
Kompletní program tohoto projektu najdete na konci této stránky. Vysvětlení je následující. Program začneme zahrnutím požadovaných hlavičkových souborů.
import cv2 import cvui
Další část programu vyžaduje určité úpravy. Musíte zadat uživatelské jméno a heslo vašeho DVR. U 5palcového displeje jsou šířka a výška 800, respektive 480, takže jsme zadali totéž.
rtsp_username = "admin" rtsp_password = "aswinth347653" width = 800 height = 480 cam_no = 1
Pokračujeme, máme funkci nazvanou vytvořit kameru, která bude použita pokaždé, když změníme číslo kamery, které je třeba zobrazit.
def create_camera (kanál): 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 pro šířku je 3 cap.set (4, 480) # ID číslo pro výšku je 480 cap.set (10, 100) # ID číslo pro jas je 10qq zpětný uzávěr
Uvnitř hlavní while smyčky máme náš program, který načte snímek ze snímacího zařízení a převede jej na celou obrazovku. Okno displeje v našem programu bude nazýváno jako obrazovka.
success, current_cam = cam.read () dim = (width, height) Full_frame = cv2.resize (current_cam, dim, interpolation = cv2.INTER_AREA) cv2.namedWindow ('screen', cv2.WINDOW_NORMAL) cv2.setWindowProperty ('obrazovka ', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
Poté máme kód pro dvě tlačítka, která budou umístěna na obrazovku. Příkaz cvui.button se používá k umístění tlačítka na požadované místo a příkaz cvui.mouse k detekci kliknutí myší. Máme dva příkazy if pro dvě tlačítka, pokud na tlačítko klikneme, příslušný příkaz if bude proveden.
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. KLIKNUTÍ)): print ("Stisknuto předchozí tlačítko") cvui.init ('obrazovka') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Uvnitř příkazu if na základě tlačítka buď zvýšíme nebo snížíme počet cam_no a poté odstraníme stávající kameru a vytvoříme novou kameru pomocí funkce, o které jsme diskutovali výše. Upozorňujeme také, že cvui.init musí pokaždé zavolat, aby obnovil obrazovku uživatelského rozhraní.
Poslední částí kódu je zobrazení rámečku jako výstupu a ukončení z výstupní obrazovky při stisknutí tlačítka q. Jen počkáme na stisknutí klávesy a pokud je klíč „q“, zničíme všechna okna.
cv2.imshow ('screen', Full_frame) if cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Testování CCTV prohlížeče Raspberry Pi
Testování kódu je docela jednoduché, zapněte pí a spusťte kód pythonu uvedený v dolní části této stránky. Ujistěte se, že jste zadali správná pověření, aby odkaz RTSP fungoval. Pokud chcete mít jistotu, můžete také zkusit použít VLC přehrávač na Pi, který je předinstalován na buster OS.
Pokud to funguje na VLC, pak si můžeme být jisti, že naše pí připojené ke stejné síti a spojení RTSP fungují tak, jak by měly. Poté otevřete program uvedený v dolní části této stránky a spusťte jej pomocí libovolného IDE pythonu. Pokud jsou přihlašovací údaje zadány správně, zobrazí se následující obrazovka. Což ukazuje živý přenos kamery se dvěma tlačítky dole.
Protože obrazovka má dotykovou obrazovku TFT, můžete se jednoduše dotknout tlačítek „předchozí“ a „další“ a přejít na další kameru. Program je zapsán do smyčky mezi prvními čtyřmi kamerami, můžete jej snadno upravit, pokud jsou k vašemu DVR připojeny více než 4 kamery.
Kompletní fungování tohoto projektu najdete ve videu, na které odkazujete níže. Doufám, že se vám výukový program líbil a naučili jste se něco užitečného, pokud máte nějaké dotazy, nechte je v sekci komentářů nebo můžete také použít naše fóra k odeslání vašich dalších požadavků. Také plánuji přidat do tohoto nastavení funkci detekce pohybu a ukládání videa, takže zůstaňte naladěni také.