- Préparation du DVR pour la diffusion RTSP
- Préparer votre Raspberry Pi
- Installation d'OpenCV et d'autres bibliothèques sur Raspberry Pi
- Programmation de Raspberry Pi pour la diffusion de vidéos RTSP à partir de CCTV
- Test de la visionneuse CCTV Raspberry Pi
La plupart des lieux de travail et des bâtiments commerciaux ont aujourd'hui un système de surveillance CCTV installé pour surveiller les activités. Mais souvent, il est difficile pour l'autorité ou les agents de sécurité concernés de surveiller en permanence le flux en direct de toutes les caméras pour rechercher une activité suspecte. La vision par ordinateur et l'apprentissage automatique progressant rapidement, il est grand temps de rendre nos systèmes de vidéosurveillance plus intelligents. Dans cet article, nous verrons comment obtenir le flux vidéo d'un DVR existant (comme Hikvision DVR) via le streaming RTSP avec Raspberry pi en utilisant Python et OpenCV. Une fois que nous aurons obtenu cela, nous pourrons tirer parti de la puissance d'OpenCV sur ces flux vidéo pour détecter un objet particulier, lire la plaque d'immatriculation du véhicule, la reconnaissance faciale, etc.
Pour les besoins de ce tutoriel, j'utiliserai un DVR CCTV Hikvision 4 canaux qui est déjà installé dans le bâtiment. Nous diffuserons tous les 4 écrans de caméra sur le Raspberry et l'afficherons sur un écran tactile de 5 pouces où l'utilisateur pourra basculer entre chaque canal selon les besoins. Je ne sais pas grand chose, compte tenu de la puissance d'OpenCV et j'ai l'intention de le mettre à l'échelle avec la détection de mouvement, l'alerte vidéo de clairon, le suivi de personne, etc., mais laissons tout cela pour un autre tutoriel.
Préparation du DVR pour la diffusion RTSP
Avant de plonger dans le matériel Raspberry Pi et le code Python, il est important de vérifier si le DVR prend en charge RTSP et comment y accéder. J'ai passé la majorité de mon temps coincé ici car la procédure semble différer pour chaque type de DVR et vous devez faire et beaucoup de coups et essayer. Mais une fois que vous avez compris cela, cela fonctionne comme un charme à chaque fois.
Tout d'abord, assurez-vous de connaître le nom d'utilisateur et le mot de passe de votre système DVR et qu'il est connecté à Internet. Également dans ce didacticiel, je diffuserai le RTSP uniquement à partir d'un réseau local.Si vous avez une adresse IP statique, vous pouvez effectuer une redirection de port et suivre la même chose pour les autres réseaux. Mais en ce qui concerne ce tutoriel, nous allons tout faire à l'intérieur du réseau local.
Étape 1: Trouvez l'adresse IP de votre DVR. Une fois que le DVR est connecté à Internet, il se voit attribuer sa propre adresse IP. Vous pouvez trouver cette adresse IP sur la page de configuration de votre routeur ou sur l'écran de votre DVR lui-même (en supposant que vous ayez un moniteur connecté au DVR). L'adresse IP de mon routeur était http://192.168.11.110/ (modifiée pour des raisons de sécurité)
Étape 2: Ouvrez n'importe quel navigateur Web de votre choix et entrez l'adresse IP et appuyez sur Entrée. Vous serez redirigé vers la page de connexion du DVR. Où vous devez entrer le nom d'utilisateur (le mien est changé) et le mot de passe de votre DVR. Le nom d'utilisateur par défaut sera admin, mais le mot de passe que vous devez connaître. Mon écran de connexion pour DVR est illustré ci-dessous, votre apparence peut différer.
Étape 3: Après une connexion réussie, recherchez le numéro de port RTSP sur votre DVR, la plupart du temps, la valeur par défaut sera 554 mais cela peut changer. Pendant que vous êtes ici, jouez avec les paramètres de configuration pour vérifier s'il existe une option pour activer RTSP, sinon vous pouvez l'ignorer. Vous devez passer du temps ici car la procédure est différente en fonction du DVR.
Étape 4: Préparez votre lien RTSP, le lien RTSP de base sera au format suivant:
rtsp: //
Encore une fois, cela dépend du type de DVR, vous pouvez utiliser Google pour trouver celui qui fonctionnera pour vous. Celui qui a fonctionné pour avait le format ci-dessous, vous pouvez également essayer avec ceci-
rtsp: //
Où
rtsp: // admin: [email protected]: 554 / Streaming / Canaux / 202 /
Étape 5: Lisez le flux sur VLC pour vous assurer que votre connexion RTSP fonctionne. Installez VLC sur un ordinateur connecté au même réseau que le DVR, lancez-le et appuyez sur Ctrl + N pour le streaming réseau. Entrez l'URL comme indiqué ci-dessous et appuyez sur OK.
Si le lien RTSP fonctionne comme il se doit, vous devriez voir un flux en direct de votre CCTV sur le lecteur VLC comme indiqué ci-dessous. Si cela génère une erreur, vous devez trouver le lien correct.
Une fois cela fait, nous n'avons plus besoin de parler de notre DVR, passons à notre Raspberry pi.
Préparer votre Raspberry Pi
Ensuite, nous devons configurer notre raspberry pi avec l'écran de 5 pouces. Je ne vais pas entrer dans les détails à ce sujet puisque nous l'avons déjà couvert à maintes reprises. Vous pouvez lire les articles suivants à titre indicatif:
- Premiers pas avec Raspberry Pi
- Interfaçage d'un écran de 5 pouces avec Raspberry Pi
Nous utilisons un Raspberry Pi 3 B + avec le système d'exploitation Debian Buster. Cela pourrait également être une bonne idée d'utiliser Pi 4 si vous le pouvez et d'ajouter également des options de refroidissement comme un dissipateur thermique ou un ventilateur car j'ai remarqué que la température atteignait presque 70 * C. Je n'ai suivi aucune procédure de refroidissement pour le moment, et ma configuration ressemble à ceci -
Installation d'OpenCV et d'autres bibliothèques sur Raspberry Pi
L'étape suivante consiste à installer OpenCV sur Raspberry Pi. Nous avons précédemment expliqué comment compiler OpenCV sur Raspberry pi.
- Installer OpenCV sur Raspberry Pi
- Premiers pas avec OpenCV
Vous pouvez suivre le lien ci-dessus et compiler OpenCV en utilisant Cmake ou simplement l'installer avec une méthode apt-get. Je recommanderais le plus tard si vous n'êtes pas dans la programmation OpenCV très sérieuse. J'ai utilisé les commandes suivantes pour installer OpenCV.
sudo apt mettre à jour sudo apt installer python3-opencv
Dans notre programme, nous utiliserons également la bibliothèque «cvui» pour créer une interface utilisateur de base avec deux boutons qui nous permettent de naviguer entre les quatre écrans. Pour installer cvui, suivez la commande ci-dessous.
Python3 pip installer cvui
Avec les deux packages installés, nous pouvons entrer dans le programme principal. Assurez-vous que les deux packages installés fonctionnent en essayant de les importer à partir du terminal de commande de Pi.
Programmation de Raspberry Pi pour la diffusion de vidéos RTSP à partir de CCTV
Le programme complet de ce projet se trouve à la fin de cette page. L'explication de la même chose est la suivante. Nous commençons le programme en incluant les fichiers d'en-tête requis.
importer cv2 importer cvui
La partie suivante du programme nécessite quelques modifications. Vous devez entrer le nom d'utilisateur et le mot de passe de votre DVR. Pour un écran de 5 pouces, la largeur et la hauteur sont respectivement de 800 et 480, nous avons donc entré la même chose.
rtsp_username = "admin" rtsp_password = "aswinth347653" width = 800 height = 480 cam_no = 1
En continuant, nous avons une fonction appelée créer une caméra qui sera utilisée à chaque fois que nous changerons le numéro de caméra à visualiser.
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) # Le numéro d'identification pour la largeur est de 3 cap.set (4, 480) # Le numéro d'identification pour la hauteur est de 480 cap.set (10, 100) # Le numéro d'identification pour la luminosité est 10qq bouchon de retour
Dans la boucle while principale, nous avons notre programme pour lire une image du périphérique de capture et la convertir en plein écran. La fenêtre d'affichage dans notre programme sera appelée comme un écran.
succès, current_cam = cam.read () dim = (largeur, hauteur) Full_frame = cv2.resize (current_cam, dim, interpolation = cv2.INTER_AREA) cv2.namedWindow ('écran', cv2.WINDOW_NORMAL) cv2.setWindowProperty ('écran ', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)
Ensuite, nous avons le code pour deux boutons qui seront placés sur l'écran. La commande cvui.button est utilisée pour placer le bouton à un endroit requis et la commande cvui.mouse est utilisée pour détecter le clic de souris. Nous avons deux instructions if pour deux boutons si le bouton est cliqué, l' instruction if respective sera exécutée.
if (cvui.button (Full_frame, width - 100, height - 40, "Next") et 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") et cvui.mouse (cvui. CLIQUEZ)): print ("Bouton précédent appuyé") cvui.init ('screen') cam_no = cam_no - 1 if (cam_no <1): cam_no = 4 del cam cam = create_camera (str (cam_no))
Dans l' instruction if , en fonction du bouton, nous augmentons ou diminuons le nombre de cam_no , puis supprimons la came existante et créons une nouvelle came en utilisant la fonction décrite ci-dessus. Notez également que cvui.init doit appeler à chaque fois pour actualiser l'écran de l'interface utilisateur.
La dernière partie du code consiste à afficher l'image en sortie et à quitter l'écran de sortie lorsque q est enfoncé. Nous attendons juste une frappe et si la touche est «q», nous détruirons toutes les fenêtres.
cv2.imshow ('screen', Full_frame) si cv2.waitKey (1) & 0xFF == ord ('q'): cv2.destroyAllWindows () break
Test de la visionneuse CCTV Raspberry Pi
Tester le code est assez simple, mettez le pi sous tension et lancez le code python indiqué au bas de cette page. Assurez-vous que vous avez entré les bonnes informations d'identification pour que le lien RTSP fonctionne. Si vous voulez être du bon côté, vous pouvez également essayer d'utiliser le lecteur VLC sur Pi qui est pré-installé sur le système d'exploitation Buster.
Si cela fonctionne sur VLC, nous pouvons être sûrs que notre pi connecté au même réseau et que le lien RTSP fonctionne comme il se doit. Ensuite, ouvrez le programme donné en bas de cette page et lancez-le en utilisant n'importe quel IDE python. Si les informations d'identification sont entrées correctement, vous verrez l'écran suivant. Ce qui montre le flux de la caméra en direct avec deux boutons en bas.
Puisque l'écran a un écran tactile TFT, vous pouvez simplement toucher les boutons «précédent» et «suivant» pour passer à la caméra suivante. Le programme est écrit en boucle entre les quatre premières caméras, vous pouvez facilement le modifier s'il y a plus de 4 caméras connectées à votre DVR.
Le fonctionnement complet de ce projet peut être trouvé dans la vidéo ci-dessous. J'espère que vous avez apprécié le tutoriel et appris quelque chose d'utile si vous avez des questions, laissez-les dans la section des commentaires ou vous pouvez également utiliser nos forums pour publier vos autres quires. En outre, je prévois d'ajouter la détection de mouvement et la fonction d'enregistrement vidéo à cette configuration, alors restez à l'écoute pour cela également.