Dans cet article, nous allons créer une application pour détecter le nombre de visages à l’aide de Python et d’OpenCV. Cet article s’adresse principalement aux débutants qui souhaitent utiliser la bibliothèque dlib pour Python. L’idée majeure de cet article est d’aider les débutants à comprendre comment les choses fonctionnent. Le code donné ici est simple et facile à comprendre.

Qu’est-ce qu’OpenCV

OpenCV est une bibliothèque logicielle spécialisée dans les domaines du traitement d’image, de l’analyse vidéo ou de la vision par ordinateur. Il peut être utilisé pour vous aider à résoudre de nombreux problèmes dans votre domaine lorsqu’il s’agit d’analyser des informations dans des photos et des vidéos par exemple. Donc, si vous cherchez un programme qui peut vous aider dans ce genre de tâche, alors OpenCV est l’option que vous devriez considérer. Il aide les développeurs à reconnaître les visages en convertissant les images en valeurs booléennes et en comparant leurs similitudes grâce à des algorithmes numériques sophistiqués.

Étape -1 : Installation des dépendances

Avant de commencer à coder, nous devons installer quelques packages et logiciels dans notre système.

Installation de Dlib :

Pour installer la bibliothèque dlib dans votre système Windows, vous devez d’abord installer deux packages

  1. Visual studio 
  2. Cmake

Pour Visual Studio, vous devez télécharger le programme d’installation de Visual Studio. Vous pouvez l’installer en accédant à ce lien pour télécharger le programme d’installation.

Après avoir téléchargé Visual Studio et l’avoir installé, vous pouvez lancer le programme et sélectionner le développement de bureau avec C++, et assurez-vous de sélectionner les outils C++ Cmake pour Windows et de l’installer. Le fichier est assez volumineux, il faudra donc un certain temps pour l’installer.

Pour cmake, vous pouvez simplement copier-coller le commun ci-dessous dans votre invite de commande système

pip3 install cmake

Après avoir installé les deux packages, vous pouvez simplement installer la bibliothèque dlib en utilisant cette commande dans votre invite de commande

pip3 install dlib

Remarque : Pour Linux, il vous suffit d’installer Cmake avant d’installer dlib, vous n’avez pas besoin de Visual Studio sous Linux et le reste du processus devrait être le même.

Installation d’Opencv :

Vous pouvez installer OpenCV en utilisant la commande pip, le code est donné ci-dessous, vous pouvez simplement copier-coller cela dans votre terminal/invite de commande.

pip3 install opencv-python

Installation de numpy :

Pour numpy, c’est le même processus que OpenCV, il suffit de copier-coller cela dans votre terminal/invite de commande.

pip3 install numpy

Remarque : Pour Opencv et Numpy, le processus doit être le même pour l’installation des packages sous Windows et Linux.

Étape -2 : coder l’application

#importing opencv
import cv2
#importing numpy
import numpy as np
#importing dlib
import dlib

Ici, nous avons importé notre bibliothèque requise, nous devons importer trois bibliothèques OpenCV. Numpy et dlib

video=cv2.VideoCapture(0)

Alors maintenant, créons une variable vidéo qui capturera essentiellement la vidéo de notre webcam et nous utilisons (0) ici car nous devons prendre l’entrée de notre webcam qui est disponible sur le canal 0

#creating the detector object
detector=dlib.get_frontal_face_detector()

Dans cette ligne de code, nous avons appelé notre classe de détecteur de phase frontale get de la bibliothèque dlib, qui peut détecter les éléments faciaux frontaux à l’aide des informations extraites de notre caméra Web.

while True:
    #extracting the video
    ret,frame=video.read()
    #flipping the frames
    frame=cv2.flip(frame,1)

Ici, nous avons créé une véritable boucle infinie sauvage pour que le cadre tourne constamment et que l’image qui est capturée dans notre webcam soit convertie en vidéo car nous savons que la vidéo est un diaporama de l’image, après cela, nous avons extrait la vidéo qui est présente dans notre variable vidéo.

    #converting image into grayscale
    gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)

    face=detector(gray)

Dans cette ligne, nous avons converti notre entrée de la webcam qui est une entrée colorée en niveaux de gris. Nous avons utilisé des appels cvtColor pour opencv maintenant cette classe CVT openCV accepte deux paramètres, le premier est le cadre qui est l’entrée de la webcam et le second est cv2.COLOR_BGR2GRAY. [Alors pourquoi avons-nous besoin de convertir l’entrée colorée en niveaux de gris – nous convertissons notre image colorée en image en niveaux de gris pour augmenter la précision de la détection d’objet et pour réduire le temps et la puissance de traitement du programme]

    #creating the faces variable
    face=detector(gray)

Donc, dans cette ligne, nous avons créé cette variable de visages qui utilisera la classe detector=dlib.get_frontal_face_detector() et nous appliquons cet objet à cette image grise et la sortie de ces visages sera de quatre valeurs le X de départ et le Y de départ et le hauteur et largeur ce sont les valeurs que la classe de détecteur fournira et que la variable faces stockera. ci-dessous un exemple avec une image qui vous aidera à mieux comprendre

num=0
for faces in faces:
        x,y=face.left(),face.top()
        hi,wi=face.right(),face.bottom()
        #implementing the cv2 dot rectangle method
cv2.rectangle(frame,(x,y),(hi,wi),(0,0.255),2)
        #incrementing i
        num=num=1

Ici, nous avons créé une variable num qui sera initialement 0 car elle stockera le nombre de visages présents, elle sera incrémentée après la détection de chaque visage. Ensuite, nous allons créer une boucle for qui littérera cette variable faces et nous avons utilisé la méthode cv2 dot rectangle qui dessinera le rectangle autour de notre visage. Cette méthode rectangle accepte ce paramètre d’abord est le cadre (l’image) puis l’axe X et l’axe Y puis la hauteur et la largeur puis la couleur et enfin la largeur du cadre autour des visages.

cv2.putText(frame, 'face'+str(num),(x-12,y-12),cv2.FONT_HERSHEY_PLAIN,0.7,(0,255,0),2)

Ici, nous avons utilisé la méthode cv2 dot put text pour mettre le numéro du texte des faces dans le cadre autour des faces. Cette méthode accepte le paramètre suivant est d’abord le cadre puis le visage puis le nombre de visages puis la position. Ici toute la partie détection de visage est faite il ne reste plus qu’à montrer l’image à l’utilisateur :

    cv2.imshow('faces',frame)

    key=cv2.waitKey(1)
    if key==ord('q'):
        break

video.release()
cv2.destroyAllWindows()

Ici, nous avons publié notre vidéo et détruit toutes les fenêtres

Sortir:

Une fois que vous avez passé en revue toutes les étapes et que vous vous êtes assuré que tout est correct, il est temps d’exécuter le code. Avant de le faire, vous devez d’abord vous assurer que votre caméra Web fonctionne – car cela n’aide pas si votre ordinateur n’est pas physiquement capable de se connecter à celui attaché à votre visage ! Lorsque vous appuyez sur Entrée ou exécutez ce code, vous devriez voir un rectangle autour de votre visage à l’écran avec un numéro qui lui est attribué – ce sont les chiffres du visage. Voir? c’est ainsi que vous détectez le nombre de visages en utilisant Python et OpenCV.

Et dans votre terminal, cela devrait être quelque chose comme ça

Conclusion: 

Dans ce didacticiel, nous avons expliqué comment détecter le nombre de visages à l’aide de Python et de la bibliothèque OpenCV. Il est facile à utiliser car la bibliothèque contient des bibliothèques pré-formées qui peuvent être utilisées pour détecter les visages. Ce didacticiel a été construit à l’aide de python et comprenait des instructions sur la façon d’installer OpenCV et dlib sur les environnements Windows et Linux. Nous espérons que vous avez apprécié ce tutoriel, si vous avez des questions ou des suggestions, assurez-vous de laisser un commentaire ci-dessous ! Merci pour la lecture.

Voici quelques tutoriels utiles que vous pouvez lire :