- Preparazione del DVR per lo streaming RTSP
- Preparare il tuo Raspberry Pi
- Installazione di OpenCV e altre librerie su Raspberry Pi
- Programmazione di Raspberry Pi per lo streaming di video RTSP da CCTV
- Testare il visualizzatore CCTV Raspberry Pi
La maggior parte dei luoghi di lavoro e degli edifici commerciali oggi dispone di un sistema di sorveglianza CCTV installato per monitorare le attività. Ma spesso è difficile per le autorità interessate o per gli addetti alla sicurezza monitorare continuamente il feed live di tutte le telecamere per cercare attività sospette. Con la visione artificiale e l'apprendimento automatico che avanzano rapidamente, è giunto il momento di rendere i nostri sistemi CCTV più intelligenti. In questo articolo, discuteremo come ottenere il feed video da un DVR esistente (come Hikvision DVR) tramite lo streaming RTSP con Raspberry pi utilizzando Python e OpenCV. Una volta ottenuto questo, saremo in grado di sfruttare la potenza di OpenCV su questi feed video per rilevare un oggetto particolare, leggere la targa del veicolo, il riconoscimento facciale e cosa no!
Per il bene di questo tutorial, userò un DVR CCTV a 4 canali Hikvision che è già installato nell'edificio. Trasmetteremo tutti gli schermi delle 4 telecamere al Raspberry e lo visualizzeremo su un display touch screen da 5 pollici dove l'utente può passare da un canale all'altro come richiesto. Lo so non molto, considerando la potenza di OpenCV e ho intenzione di ingrandirlo con rilevamento del movimento, avviso video bugler, monitoraggio delle persone, ecc., Ma lasciamo tutto questo per un altro tutorial.
Preparazione del DVR per lo streaming RTSP
Prima di immergerci nell'hardware Raspberry Pi e nel codice Python, è importante verificare se il DVR supporta RTSP e come accedervi. Ho passato la maggior parte del mio tempo bloccato qui perché la procedura sembra essere diversa per ogni tipo di DVR e devi fare un sacco di colpi e provare. Ma una volta capito, funziona sempre come un incantesimo.
Per prima cosa, assicurati di conoscere il nome utente e la password del tuo sistema DVR e che sia connesso a Internet. Anche in questo tutorial, trasmetterò l'RTSP solo da una rete locale, se hai un IP statico, puoi fare il port forwarding e seguire lo stesso per altre reti. Ma per quanto riguarda questo tutorial, faremo tutto all'interno della rete locale.
Passaggio 1: trova l'indirizzo IP del tuo DVR. Una volta che il DVR è connesso a Internet, gli verrà assegnato il proprio indirizzo IP. È possibile trovare questo indirizzo IP dalla pagina di configurazione del router o dallo schermo del DVR stesso (supponendo che si abbia un monitor collegato al DVR). L'indirizzo IP del mio router era http://192.168.11.110/ (modificato per motivi di sicurezza)
Passaggio 2: apri qualsiasi browser web di tua scelta e inserisci l'indirizzo IP e premi invio. Verrai portato alla pagina di accesso al DVR. Dove devi inserire il nome utente (il mio è cambiato) e la password per il tuo DVR. Il nome utente predefinito sarà admin, ma devi conoscere la password. La schermata di accesso per il DVR è mostrata di seguito, il tuo aspetto potrebbe differire.
Passaggio 3: dopo un accesso riuscito, cerca il numero di porta RTSP sul DVR, la maggior parte delle volte, il valore predefinito sarà 554 ma potrebbe cambiare. Mentre sei qui, gioca con le impostazioni di configurazione per verificare se c'è un'opzione per abilitare RTSP, in caso contrario puoi saltarlo. Devi passare un po 'di tempo qui poiché la procedura è diversa in base al DVR.
Passaggio 4: prepara il tuo collegamento RTSP, il collegamento RTSP di base sarà nel seguente formato:
rtsp: //
Ancora una volta, dipende dal tipo di DVR, puoi usare google per trovare quello che funzionerà per te. Quello per cui ha funzionato aveva il formato seguente, puoi anche provare con questo-
rtsp: //
Dove
rtsp: // admin: [email protected]: 554 / Streaming / Canali / 202 /
Passaggio 5: riproduci lo streaming su VLC per assicurarti che la connessione RTSP funzioni. Installa VLC su un computer connesso alla stessa rete del DVR, avvialo e premi Ctrl + N per lo streaming di rete. Immettere l'URL come mostrato di seguito e premere ok.
Se il collegamento RTSP funziona come dovrebbe, dovresti vedere un live streaming della tua CCTV sul lettore VLC come mostrato di seguito. Se genera un errore, devi trovare il collegamento corretto.
Fatto ciò, non abbiamo più bisogno di parlare del nostro DVR, andiamo avanti con il nostro Raspberry pi.
Preparare il tuo Raspberry Pi
Successivamente, dobbiamo configurare il nostro Raspberry Pi con il display da 5 pollici. Non entrerò nei dettagli di questo dato che l'abbiamo già trattato molte volte. Puoi leggere i seguenti articoli come guida:
- Guida introduttiva a Raspberry Pi
- Interfacciamento del display da 5 pollici con Raspberry Pi
Stiamo utilizzando un Raspberry Pi 3 B + con il sistema operativo Debian Buster in esecuzione. Potrebbe anche essere una buona idea usare Pi 4 se possibile e aggiungere anche alcune opzioni di raffreddamento come un dissipatore di calore o una ventola perché ho notato che la temperatura raggiunge quasi i 70 * C. Al momento non ho seguito alcuna procedura di raffreddamento e la mia configurazione è simile a questa:
Installazione di OpenCV e altre librerie su Raspberry Pi
Il prossimo passo è installare OpenCV su Raspberry Pi. Abbiamo già discusso in precedenza come compilare OpenCV su Raspberry pi.
- Installazione di OpenCV su Raspberry Pi
- Iniziare con OpenCV
Puoi seguire il link sopra e compilare OpenCV usando Cmake o semplicemente installarlo con un metodo apt-get. Consiglierei il secondo se non sei interessato alla programmazione OpenCV molto seria. Ho usato i seguenti comandi per installare OpenCV.
sudo apt update sudo apt install python3-opencv
Nel nostro programma utilizzeremo anche la libreria “cvui” per creare un'interfaccia utente di base con due pulsanti che ci consentano di navigare tra le quattro schermate. Per installare cvui segui il comando seguente.
Python3 pip installa cvui
Con entrambi i pacchetti installati, possiamo entrare nel programma principale. Assicurati che entrambi i pacchetti installati funzionino e prova ad importarli dal terminale di comando di Pi.
Programmazione di Raspberry Pi per lo streaming di video RTSP da CCTV
Il programma completo di questo progetto si trova alla fine di questa pagina. La spiegazione dello stesso è la seguente. Iniziamo il programma includendo i file di intestazione richiesti.
import cv2 import cvui
La parte successiva del programma richiede alcune modifiche. Devi inserire il nome utente e la password del tuo DVR. Per un display da 5 pollici, la larghezza e l'altezza sono rispettivamente 800 e 480, quindi abbiamo inserito lo stesso.
rtsp_username = "admin" rtsp_password = "aswinth347653" larghezza = 800 altezza = 480 cam_no = 1
Andando avanti, abbiamo una funzione chiamata crea una telecamera che verrà utilizzata ogni volta che cambiamo il numero della telecamera da visualizzare.
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) # Il numero ID per la larghezza è 3 cap.set (4, 480) # Il numero ID per l'altezza è 480 cap.set (10, 100) # Il numero ID per la luminosità è 10qq tappo di ritorno
All'interno del ciclo while principale, abbiamo il nostro programma per leggere un frame dal dispositivo di acquisizione e convertirlo a schermo intero. La finestra di visualizzazione nel nostro programma verrà chiamata come uno schermo.
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 ('screen ', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
Seguito da quello abbiamo il codice per due pulsanti che verranno posizionati sullo schermo. Il comando cvui.button viene utilizzato per posizionare il pulsante in un punto richiesto e il comando cvui.mouse viene utilizzato per rilevare il clic del mouse. Abbiamo due istruzioni if per due pulsanti se il pulsante viene cliccato, verrà eseguita la rispettiva istruzione if .
if (cvui.button (Full_frame, width - 100, height - 40, "Next") e 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") e cvui.mouse (cvui. CLIC)): print ("Pulsante precedente premuto") cvui.init ('screen') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
All'interno dell'istruzione if , in base al pulsante aumentiamo o diminuiamo il conteggio cam_no, quindi cancelliamo la cam esistente e creiamo una nuova cam utilizzando la funzione discussa sopra. Inoltre, tieni presente che cvui.init deve chiamare ogni volta per aggiornare la schermata dell'interfaccia utente.
La parte finale del codice consiste nel visualizzare il frame come output e per uscire dalla schermata di output quando si preme q. Aspettiamo solo una battitura e se la chiave è "q", distruggeremo tutte le finestre.
cv2.imshow ('screen', Full_frame) se cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Testare il visualizzatore CCTV Raspberry Pi
Testare il codice è piuttosto semplice, accendi il pi e avvia il codice python fornito in fondo a questa pagina. Assicurati di aver inserito le credenziali corrette per il funzionamento del collegamento RTSP. Se vuoi essere sicuro, puoi anche provare a utilizzare il lettore VLC su Pi che viene preinstallato su buster OS.
Se funziona su VLC, possiamo essere sicuri che il nostro pi è connesso alla stessa rete e il collegamento RTSP funziona come dovrebbe. Quindi apri il programma fornito in fondo a questa pagina e avvialo utilizzando qualsiasi IDE python. Se le credenziali sono inserite correttamente, vedrai la seguente schermata. Che mostra il feed della telecamera in diretta con due pulsanti in basso.
Poiché lo schermo ha un touch screen TFT, puoi semplicemente toccare i pulsanti "precedente" e "successivo" per passare alla telecamera successiva. Il programma è scritto in loop tra le prime quattro telecamere, puoi facilmente modificarlo se ci sono più di 4 telecamere collegate al tuo DVR.
Il funzionamento completo di questo progetto può essere trovato nel video collegato sotto. Spero che il tutorial ti sia piaciuto e che abbia imparato qualcosa di utile se hai domande, lasciale nella sezione commenti o puoi anche usare i nostri forum per pubblicare altri tuoi quires. Inoltre, ho intenzione di aggiungere il rilevamento del movimento e la funzione di salvataggio video a questa configurazione, quindi rimanete sintonizzati anche per questo.