- Preparació del DVR per a la transmissió RTSP
- Preparant el vostre Raspberry Pi
- Instal·lació d’OpenCV i altres biblioteques a Raspberry Pi
- Programació de Raspberry Pi per a la transmissió de vídeo RTSP des de CCTV
- Prova del visualitzador de televisió de televisió Raspberry Pi
Actualment, la majoria dels edificis comercials i laborals tenen instal·lat un sistema de vigilància de circuit tancat de televisió per controlar les activitats. Però sovint és difícil per a l'autoritat o personal de seguretat en qüestió supervisar el flux en directe de totes les càmeres de manera contínua per buscar activitat sospitosa. Amb la visió per computador i l’aprenentatge automàtic avançant en una fase ràpida, ja és hora que els nostres sistemes de CCTV siguin més intel·ligents. En aquest article, discutirem com obtenir el canal de vídeo des d’un DVR existent (com el DVR Hikvision) mitjançant la transmissió RTSP amb Raspberry pi mitjançant Python i OpenCV. Un cop ho aconseguim, podrem aprofitar la potència d’OpenCV en aquests canals de vídeo per detectar un objecte en particular, llegir la matrícula del vehicle, el reconeixement facial i què no.
En nom d’aquest tutorial, faré servir un DVR CCTV de 4 canals Hikvision que ja està instal·lat a l’edifici. Reproduirem les 4 pantalles de la càmera al Raspberry i les mostrarem en una pantalla tàctil de 5 polzades, on l'usuari podrà canviar entre cada canal segons sigui necessari. No sé molt això, tenint en compte la potència d’OpenCV i tinc previst ampliar-lo amb detecció de moviment, alerta de vídeo de clarines, seguiment de persones, etc., però deixem tot això per un altre tutorial.
Preparació del DVR per a la transmissió RTSP
Abans d’endinsar-nos en el maquinari i el codi python de raspberry pi, és important comprovar si el DVR admet RTSP i com accedir-hi. Vaig passar la major part del temps atrapat aquí perquè el procediment sembla ser diferent per a cada tipus de DVR i heu de fer molts cops i provar-ho. Però un cop ho comproveu, funciona com un encant cada vegada.
Primer de tot, assegureu-vos de conèixer el nom d’usuari i la contrasenya del vostre sistema DVR i que estigui connectat a Internet. També en aquest tutorial, emetré el RTSP només des d’una xarxa local, si teniu una IP estàtica, podeu fer el reenviament de ports i seguir el mateix per a altres xarxes. Però pel que fa a aquest tutorial, ho farem tot dins de la xarxa local.
Pas 1: cerqueu l'adreça IP del vostre DVR. Un cop el DVR estigui connectat a Internet, se li assignarà la seva pròpia adreça IP. Podeu trobar aquesta adreça IP des de la pàgina de configuració del router o des de la pantalla del DVR (suposant que teniu un monitor connectat al DVR). L'adreça IP del meu enrutador era http://192.168.11.110/ (canviada per motius de seguretat)
Pas 2: obriu qualsevol navegador web que trieu i introduïu l'adreça IP i premeu Intro. Se us dirigirà a la pàgina d'inici de sessió del DVR. On heu d'introduir el nom d'usuari (el meu ha canviat) i la contrasenya del vostre DVR. El nom d'usuari per defecte serà administrador, però la contrasenya que heu de conèixer. La pantalla d’inici de sessió del DVR es mostra a continuació, és possible que l’aspecte sigui diferent.

Pas 3: després d'un inici de sessió correcte, cerqueu el número de port RTSP al DVR; la majoria de vegades, el valor per defecte serà 554, però pot canviar. Mentre esteu aquí, jugueu amb els paràmetres de configuració per comprovar si hi ha una opció per habilitar RTSP, si no, podeu ometre-la. Heu de passar una estona aquí, ja que el procediment és diferent en funció del DVR.

Pas 4: prepareu l'enllaç RTSP, l'enllaç RTSP bàsic tindrà el format següent:
rtsp: //
Una vegada més, depèn del tipus de DVR; podeu utilitzar Google per trobar el que us funcioni. El que va funcionar tenia el format següent, també podeu provar amb això-
rtsp: //
On
rtsp: // admin: [email protected]: 554 / Transmissió / Canals / 202 /
Pas 5: reproduïu el flux a VLC per assegurar-vos que la vostra connexió RTSP funcioni. Instal·leu VLC en un ordinador connectat a la mateixa xarxa que el DVR, inicieu-lo i premeu Ctrl + N per transmetre la xarxa. Introduïu l'URL com es mostra a continuació i premeu bé.

Si l'enllaç RTSP funciona de la manera que hauria de fer-ho, hauríeu de veure una transmissió en directe del vostre circuit tancat de televisió al reproductor VLC, tal com es mostra a continuació. Si genera un error, haureu d'esbrinar l'enllaç correcte.

Fet això, ja no necessitem parlar del nostre DVR que permet continuar amb el nostre Raspberry pi.
Preparant el vostre Raspberry Pi
A continuació, hem de configurar el nostre raspberry pi amb la pantalla de 5 polzades. No entraré en els detalls, ja que ja ho hem tractat moltes vegades. Podeu llegir els articles següents a títol orientatiu.
- Introducció a Raspberry Pi
- Interfície de pantalla de 5 polzades amb Raspberry Pi
Estem utilitzant un Raspberry Pi 3 B + amb el sistema operatiu Debian Buster que s’executa en ell. També pot ser una bona idea utilitzar Pi 4 si podeu i també afegir algunes opcions de refrigeració com un dissipador de calor o un ventilador, ja que vaig notar que la temperatura arribava a gairebé 70 * C. No he seguit cap procediment de refredament fins ara, i la meva configuració té aquest aspecte:

Instal·lació d’OpenCV i altres biblioteques a Raspberry Pi
El següent pas és instal·lar OpenCV a Raspberry Pi. Anteriorment hem comentat com compilar OpenCV a Raspberry pi.
- Instal·lació d’OpenCV a Raspberry Pi
- Introducció a OpenCV
Podeu seguir l'enllaç anterior i compilar OpenCV amb Cmake o simplement instal·lar-lo amb un mètode apt-get. Us recomanaria la versió posterior si no esteu en programació OpenCV molt seriosa. He utilitzat les ordres següents per instal·lar OpenCV.
actualització sudo apt sudo apt install python3-opencv
Al nostre programa, també farem ús de la biblioteca “cvui” per crear una interfície d’usuari bàsica amb dos botons que ens permetin navegar entre les quatre pantalles. Per instal·lar cvui, seguiu l'ordre següent.
Python3 pip instal·la cvui
Amb els dos paquets instal·lats, podem entrar al programa principal. Assegureu-vos que tots dos paquets instal·lats funcionin, intenteu importar-los des del terminal d’ordres de Pi.

Programació de Raspberry Pi per a la transmissió de vídeo RTSP des de CCTV
El programa complet d’aquest projecte es troba al final d’aquesta pàgina. L’explicació del mateix és la següent. Comencem el programa incloent els fitxers de capçalera necessaris.
importar cv2 importar cvui
La següent part del programa requereix una certa edició. Heu d'introduir el nom d'usuari i la contrasenya del vostre DVR. Per a una pantalla de 5 polzades, l'amplada i l'alçada són de 800 i 480 respectivament, de manera que hem introduït la mateixa.
rtsp_username = "administrador" rtsp_password = "aswinth347653" ample = 800 altura = 480 cam_no = 1
Seguint, tenim una funció anomenada crear una càmera que s’utilitzarà cada vegada que canviem el número de càmera que s’ha de veure.
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) # El número d'identificació per a l'amplada és de 3 cap.set (4, 480) # El número d'identificació per a l'alçada és de 480 cap.set (10, 100) # El número d'identificació per a la brillantor és de 10qq tap de retorn
Dins del bucle principal while, tenim el nostre programa per llegir un marc del dispositiu de captura i convertir-lo a pantalla completa. La finestra de visualització del nostre programa es dirà com a pantalla.
exit, current_cam = cam.read () dim = (amplada, alçada) 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)
A continuació, tenim el codi per a dos botons que es col·locaran a la pantalla. L'ordre cvui.button s'utilitza per col·locar el botó en un lloc requerit i l'ordre cvui.mouse s'utilitza per detectar el clic del ratolí. Tenim dues sentències if per a dos botons si es fa clic al botó, s'executarà la sentència if respectiva.
if (cvui.button (Full_frame, width - 100, height - 40, "Next") i cvui.mouse (cvui.CLICK)): print ("Premeu el botó següent") cvui.init ('pantalla') 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 ("Premeu el botó anterior") cvui.init ('screen') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Dins de la sentència if , basant-nos en el botó, augmentem o disminuïm el recompte cam_no i, a continuació, suprimim la càmera existent i en creem una de nova utilitzant la funció que hem comentat anteriorment. Tingueu en compte també que cvui.init ha de trucar cada vegada per actualitzar la pantalla de la IU.
La part final del codi és mostrar el marc com a sortida i sortir de la pantalla de sortida quan es prem q. Simplement esperem una pulsació de tecla i, si la tecla és 'q', destruirem totes les finestres.
cv2.imshow ('pantalla', Full_frame) si cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows ()
Prova del visualitzador de televisió de televisió Raspberry Pi
Provar el codi és força senzill, engegueu el pi i engegueu el codi python que apareix a la part inferior d’aquesta pàgina. Assegureu-vos que heu introduït les credencials adequades perquè l'enllaç RTSP funcioni. Si voleu estar segur, també podeu provar d’utilitzar el reproductor VLC de Pi, que ve preinstal·lat al sistema operatiu buster.

Si funciona a VLC, podem estar segurs que el nostre pi està connectat a la mateixa xarxa i que l’enllaç RTSP funciona com hauria de ser. A continuació, obriu el programa que apareix a la part inferior d'aquesta pàgina i inicieu-lo amb qualsevol IDE de python. Si s’introdueixen les credencials correctament, veureu la pantalla següent. El que mostra el flux de càmera en directe amb dos botons a la part inferior.

Com que la pantalla té una pantalla tàctil TFT, només podeu tocar els botons "anterior" i "següent" per passar a la càmera següent. El programa està escrit per fer un bucle entre les primeres quatre càmeres, podeu modificar-lo fàcilment si hi ha més de 4 càmeres connectades al vostre DVR.
El funcionament complet d’aquest projecte es pot trobar al vídeo enllaçat a continuació. Espero que hagueu gaudit del tutorial i hàgiu après alguna cosa útil si teniu alguna pregunta, deixeu-los a la secció de comentaris o també pugueu utilitzar els nostres fòrums per publicar els vostres altres dubtes. A més, tinc previst afegir la funció de detecció de moviment i estalvi de vídeo a aquesta configuració, així que estigueu atents també a això.
