Reconnaissance faciale avec Python et OpenCV | Jayanta Sarkar | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Reconnaissance faciale avec Python et OpenCV

teacher avatar Jayanta Sarkar, Behind the Code: Jayanta Sarkar

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      Introduction

      1:05

    • 2.

      Installez les bibliothèques et lisez le fichier image

      12:55

    • 3.

      MediaPipe et configuration de la détection de visage

      8:47

    • 4.

      Boucle principale qui va reconnaître le visage

      12:32

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

15

apprenants

--

À propos de ce cours

Êtes-vous prêt à passer au niveau supérieur en matière de vision par ordinateur ? Dans ce cours pratique, basé sur un projet, vous apprendrez à créer un outil de reconnaissance multi-visage en temps réel en utilisant Python, OpenCV et la bibliothèque face_recognition.

Que vous soyez un passionné d'IA, un développeur Python ou un étudiant en vision par ordinateur, ce cours vous guidera pas à pas dans la création d'un système de reconnaissance faciale puissant et pratique, capable de détecter et d'identifier plusieurs visages en temps réel à l'aide de votre webcam.

Rencontrez votre enseignant·e

Teacher Profile Image

Jayanta Sarkar

Behind the Code: Jayanta Sarkar

Enseignant·e

Jayanta Sarkar is a dedicated Python programmer and full-stack web developer with a passion for creating dynamic and interactive web applications. With a robust background in both front-end and back-end development, Jayanta excels in building seamless user experiences and efficient, scalable systems.

Over the years, Jayanta has honed his skills in various programming languages and frameworks, making him proficient in technologies such as JavaScript, CSS, HTML, and MySQL. His expertise extends to developing comprehensive solutions that integrate sophisticated database management with intuitive user interfaces.

Jayanta's journey in the tech industry is marked by a continuous drive to learn and adapt to new technologies. He has developed and published several successf... Voir le profil complet

Level: All Levels

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. Introduction: Bonjour, les gars. C'est bon de te revoir. Encore une fois, je suis de retour avec un nouveau cours lié à la vision par ordinateur. Aujourd'hui, dans ce cours, nous allons créer une reconnaissance de phase en temps réel à l'aide d'Open Civil Library et de Python Bonjour. Je m'appelle Jonatha Shorter Je suis développeur web Fullstack, programmeur Python et instructeur en ligne Il peut détecter plusieurs phases et identifier le pass en même temps à l'aide de notre webcam. Permettez-moi de vous montrer la démonstration de ce que nous allons construire aujourd'hui dans le cadre de ce projet. Comme vous pouvez le constater, notre programme a réussi à reconnaître ma phase. Il a également reconnu la phase du Premier ministre Modi. Il a ensuite reconnu la phase Donald Trump. Après cela, il a reconnu la phase Justin Trudeau, et enfin, il a reconnu la phase Georgia Meloni Notre programme est tout à fait capable de détecter et de reconnaître les phases. Pour créer ce projet, nous allons utiliser canal multimédia et un module de reconnaissance de phase À partir du prochain tutoriel, nous allons commencer notre codage. Nous allons commencer par les dettes liées à l'importation. 2. Installez les bibliothèques et lisez le fichier image: Enfin, nous sommes dans mon éditeur de code Visor Studio. Et comme vous pouvez le voir dans mon répertoire de travail actuel, je crée déjà un point Pi de reconnaissance de nom de fichier Python et un dossier Un nom de dossier connu sous le nom de underscore faces. Dans ce dossier, nous avons quelques images. Nous avons une image de Georgia Meloni. Nous avons une image de Naren Romoi. Nous avons l'image de Justin Trudeau et enfin celle de Donald Tram. Ce sont tous des pass bien connus dans le monde entier, et pour nous aider à les reconnaître, nous avons formé notre modèle avec ces phases Revenons maintenant au point de reconnaissance Pi 5. Et dans un premier temps, je vais importer les modules importants. Dans un premier temps, nous devons importer le module du système d'exploitation, le type de carte SIM, le système d'exploitation. Grâce à ce module, nous pouvons accéder à nos répertoires de travail, sinon aux dossiers. Ensuite, nous devons importer un autre module appelé CV two. Il s'agit du module principal. Type Simu, importation, etc. Ensuite, nous devons saisir un autre module. Mais d'abord, nous devons télécharger ce module, et le nom de notre module est reconnaissance de phase. Ouvrons Windows Power Shell et essayons de télécharger ce module. Pour télécharger ce module, il vous suffit de taper, de taper , d'installer, et notre module est la reconnaissance de phase Ensuite, vous devez appuyer sur Entrée. Après avoir appuyé sur Entrée, comme vous pouvez le voir, exigence est déjà satisfaite car je télécharge déjà ce module, mais vous risquez de rencontrer une erreur à cause de ce module, car ce module comporte des dépendances telles que Nampi, Pillow et DL Mais dans votre cas, vous pouvez avoir une erreur à cause de ce module DL, et nous devons installer ce module manuellement. Je vais vous montrer comment installer ce module. Pour résoudre le problème, ouvrez simplement votre navigateur et recherchez le lien de téléchargement du package Well. Ensuite, il vous fournit ce lien, ce lien Github, et vous devez ouvrir ce lien Github Supprimez le fichier HL à points binaires compilé et vous devez télécharger ce fichier Wheel. Si je clique sur ce fichier, laissez-moi vous montrer, comme vous pouvez le voir, qu'il fournit ici plusieurs fichiers HL pour plusieurs versions de Python. Si vous utilisez la version 3.10, vous pouvez utiliser ce fichier Wheel Si vous utilisez la version 3.7, vous pouvez utiliser ce fichier Well. J'utilise la version 3.11, donc je télécharge celle-ci Pour le télécharger, il suffit de sélectionner votre version de Windows. Je vais utiliser celui-ci et je clique dessus. Après cela, vous devez cliquer sur Télécharger le fichier brut. Après avoir cliqué sur le bouton Télécharger, comme vous pouvez le voir, il est téléchargé dans ce dossier, ce dossier de téléchargement. Il est téléchargé dans ce dossier de téléchargement. Maintenant, laissez-moi vous montrer comment installer ce fichier WL à l'aide de Windows Power Shell. Dans un premier temps, vous devez copier ce chemin de fichier. Je copie le chemin exact du fichier et je vais ouvrir mon Windows Power Shell. Et comme vous pouvez le voir, je l'allume dans mon Windows Power Shell. Pour télécharger ce fichier WL , vous devez d' abord taper, lire, installer, puis l'espace et utiliser des codes à goujon Ensuite, à l'intérieur des codes à goujon, vous devez mettre le chemin du fichier Après cela, vous devez utiliser Ein, puis vous devez fournir le nom du fichier. Pour fournir le bon nom, je vais copier le nom exact de l'amende. À partir de là, je vais copier le nom exact du fichier avec l'extension et je vais le coller ici, Control V, et nous devons appuyer sur Entrée pour télécharger ce module dans notre système. Appuyez simplement sur Entrée et votre processus de téléchargement sera calculé. Je l'ai déjà téléchargé, donc je ne vais pas le télécharger à nouveau. Voici comment vous pouvez télécharger n'importe quel fichier Hill sur votre machine locale. Passons maintenant à l'éditeur de code. Ensuite, après avoir installé le module DL, vous pouvez maintenant installer le module de reconnaissance de phase dans votre système Il suffit donc de taper la reconnaissance de phase d'installation PIP. Vous devez suivre cette méthode uniquement si votre système ne parvient pas à télécharger le module D automatiquement. Importons le module de reconnaissance de phase dans nos cinq modules, certains de type Import et nom de notre module est reconnaissance de phase En dehors de cela, nous devons installer un autre module , Media Pipe. Pour installer le module media pyte, vous devez taper cette commande Pep Install OpenCB Python Space Media Pipe. Si vous appuyez sur Entrée, comme vous pouvez le voir, exigence est déjà satisfaite car je télécharge déjà ce module dans mon système. Entrons le module dans mon système. Certains types d'importation, et je vais importer Media Pipe en tant que MP. C'est ça. Après avoir importé tous les modules nécessaires, nous devons charger les faces connues. Je tiens à dire que nous devons intégrer tous les visages connus tels que Meloni Modi, Trudo N'oubliez pas que vous pouvez utiliser autant de pass que vous le souhaitez. C'est à vous de décider. Ici, je vais taper une seule commande pour charger les phases connues. Après cela, je vais déclarer deux variables. Pour stocker les phases connues, nous devons définir deux variables, essentiellement deux listes. Le nom de notre première variable est connu sous unc phase, sous sco, encodings, égal à I empty list. Ensuite, je vais définir une autre variable nom de phase connu sous sco, phase, sous encodages sco, underscoename Les noms sont égaux à blancs. Nos premières variables stockent les codages numériques de chaque passe connue et les secondes variables stockent les noms nommés correspondant à chaque passe Dans notre première liste, nous allons stocker les encodages numériques et dans notre deuxième variable, nous allons stocker le nom des images, et elle va récupérer tous les noms du beau nom, comme Meloni Modi Trudeau tram. Je vais prendre le nom de l'image comme nom Ensuite, nous devons parcourir tous les fichiers de ce dossier de phase connu. Pour cela, nous allons utiliser for loop. Laissez-moi vous montrer comment faire. Additionnez RotYefflMe en un point, je vais utiliser sa fonction DA Ensuite, dans les intersections rondes, je vais fournir le nom du dossier qui est non phase, K Wn underscore phase, En gros, ces quatre boucles vont parcourir tous les fichiers du dossier nonpas Ensuite, à l'intérieur des quatre boucles, nous devons construire le chemin complet du fichier pour chaque image. Je tiens à dire ici que le nom du fichier représente les images, le fichier image, qui se trouve dans ce dossier nonpas Nous examinons chaque image. Nous devons donc construire le chemin complet du fichier, je vais donc définir une autre variable appelée PAT. Mais comme ici, je vais utiliser la fonction Join. Tapez Os path dot join. Ensuite, à l'intérieur de la cavité ronde, nous devons d'abord fournir le nom du dossier, et le nom de notre dossier n'est pas des faces Sans visages ni abricomes, nous devons fournir le nom du fichier Je vais transmettre la variable de nom finale. Nom du fichier Il va joindre le non-pass et le fichier actuel pour obtenir le chemin complet de l'image. Supposons que pour Meloni, il obtienne le nom du dossier sans phase, puis qu'il ajoute le chemin du fichier, meloit JPG Ensuite, nous devons charger l'image dans le module de reconnaissance de phase Pour cela, je vais définir une autre variable appelée image appelée image. Image égale à ici, je vais taper un point de reconnaissance de phase et à partir de la reconnaissance de phase, je vais appeler une méthode appelée charger un fichier image Chargez le fichier image. Ensuite, dans le roundres, je vais fournir la variable de chemin En gros, il charge le fichier image en mémoire dans un format que la bibliothèque de reconnaissance de rythme peut traiter En fait, dans les coulisses, il utilisait l'allée Nampi Ensuite, nous devons obtenir les codages de phase. Pour cela, je vais définir une autre variable appelée encodings Encodages équivalents à la reconnaissance de phase. Dot, je vais utiliser à partir de la réorganisation des phrases, je vais utiliser des codages de phase Ensuite, à l'intérieur des rondresses, nous devons fournir l' image variable image Et je vais régler ça cinq. Il essaie de trouver toutes les phases de l'image et de générer un codage à 128 décimaux pour chaque image En gros, il renvoie une liste. Même s'il n'y a qu'une seule phase, elle renvoie quand même une liste. Maintenant, si le rythme est trouvé, nous devons définir le codage de phase pour cette liste et le nom du pas pour cette liste. Pour cela, ici, je vais utiliser la condition IP. S'il s'agit d'encodages, alors dans cette condition IP, je vais ajouter les encodages à Donc, les types, les codages non phasés, ajoutent des points à la fonction, ajoutez-les ensuite à l'intérieur de la résine ronde, je suis À l'intérieur du renfoncement carré, je vais fournir zéro En gros, il prend le premier codage de phase trouvé dans cette image et l'ajoute à cette liste, les codages non phasés Ensuite, nous devons enfin extraire l'image. Pour cela, nous allons utiliser la méthode du texte fractionné. Ici, je vais taper Os, point, butt, split text. Ensuite, à l'intérieur des bretelles rondes, je vais fournir le nom du fichier Ensuite, à l'intérieur des bretelles carrées, je vais passer zéro En gros, il va diviser le fichier en tupel tel que melon point JPG Meloni est un tupel et le point JPG est un autre objet en tapel Ici, nous passons à zéro, je veux dire que nous allons extraire le premier, donc il ne va extraire que le nom, meloni pas l'extension C'est pourquoi nous n'utilisons aucun cheveu, car nous devons uniquement extraire le nom. Ensuite, nous devons définir les noms dans cette liste. Pour cela, nous devons à nouveau utiliser la méthode append. Type de résumé, noms de phase connus, méthode d'ajout par points. Ensuite, dans les arrondreses, nous devons ajouter les noms, mais avant de les stocker, je vais les stocker dans une variable qui est le nom du type de somme des noms ici, nom Je vais fournir le nom cette variable dans cette méthode d'ajout Nom, et je vais mettre cette pile en place. En gros, ce code parcourt le répertoire de phase connu. Et pour chaque image, il va la charger, extraire le codage de la première phase et définir le codage, ainsi que le nom du fichier, pour les éléments de cette liste. Et assurez-vous que toutes les images que vous utilisez ont une phase claire. Si vous téléchargez une image comportant plusieurs phases sur cette image, seule la première phase sera extraite. Il ne reconnaîtra pas toutes les phases de l'image. C'est pourquoi je recommanderai de télécharger ce type d' images qui n'ont qu' une seule phase, comme celles-ci. Il s'agit de la première partie de ce didacticiel. Et dans la prochaine partie de ce didacticiel, nous allons travailler sur la configuration de la détection de phase Media Pi et nous allons démarrer la caméra. Merci d'avoir regardé cette vidéo, restez connectés pour la prochaine partie. 3. MediaPipe et configuration de la détection de visage: Bonjour, les gars. C'est bon de te revoir. Il s'agit de la deuxième partie de ce didacticiel. Et ici, je vais parler de la détection de phase du canal multimédia. Donc, dans un premier temps, je vais taper la commande unique, qui est le canal multimédia, la configuration de la détection de phase. Ensuite, je vais définir deux variables, et le nom de notre première variable est MP, media pipe, phase, underscore detection Égal à l'aminotype P (phase de la solution point en cas de détection par scop), phase de détection par scoscope Ensuite, nous devons créer les outils de dessin. Pour cela, je vais définir une autre variable qui est le dessin de soulignement MP, égal à p point solution, dessin utile, trait de soulignement utile Maintenant, quelle est la signification de ces deux variables ? Qu'est-ce que tu peux faire avec ça ? Dans notre première détection comprise en phase MP variable, nous chargeons la solution de détection de phase Pi du média, et dans notre deuxième variable, nous fournissons ici une fonction utilitaire permettant tracer le point de repère de phase sur les images. Maintenant, démarrons la caméra. Pour cela, je vais définir une autre variable, et le nom de notre variable est cap, CAP, Cap sinon capturé Ici, nous devons appeler la méthode de capture vidéo à deux points CV, capture vidéo et à l'intérieur du laiton rond, nous devons transmettre la source. En tant que source, je vais passer à zéro car je n'ai qu'une seule webcam dans mon système. Ensuite, nous devons initialiser le module de détection de phase avec un minimum de confiance Pour cela, je vais taper avec MP, souligner le point de détection de phase à partir de là, je veux exécuter la détection de phase Détection de phase. Ensuite, à l'intérieur des roses rondes, je vais définir un niveau minimum de confiance en matière de détection. L'homme souligne la détection, souligne la confiance, égal à, et je vais le définir à 0,6 Cependant, je vais taper comme Détection de phase, détection de soulignement de phase Ensuite, à l'intérieur, ici, je vais faire une petite boucle. Ici, je vais taper y, le point du capuchon est ouvert, est ouvert. Ensuite, dans cette boucle while, dans la boucle ins this while ici, je vais déclarer deux variables. Le premier est pour la variable Bullen et second pour le cadre de l'image, et vous connaissez le processus Je tape RET, virgule, et pour stocker le frame mut frame, égal à la méthode cat read, Cap point Ensuite, je vais dire p condition. Si ce n'est pas vrai, je tiens à dire que la valeur Bian n'est pas vraie, alors dans cette condition IP, je veux rompre la boucle. Choisissez, c'est ça. Maintenant, la question est de savoir ce que j'ai essentiellement fait ici. Dans un premier temps, nous ouvrons notre caméra Web par défaut et l'enregistrons dans une variable cab. Après cela, nous initialisons modèle de détection de phase avec un minimum de confiance de 0,6 et son utilisation avec l' instruction, car cela garantit une bonne gestion des ressources Je ferme automatiquement le modèle lorsque c'est fait. Ensuite, je lis les images de la caméra en continu à l'aide de Hilou. Cab point est une méthode ouverte vérifie si le flux vidéo est actif, et c'est pour une valeur booléenne, la variable frame capture une image depuis la webcam puis voit une condition Si aucune trame n'est reçue, elle sortira de la boucle. D'une manière ou d'une autre, la connexion de notre caméra est interrompue, puis elle va rompre la boucle s'il n'y a aucune séquence. Après cela, dans cette boucle while, je vais définir une condition IP. Tapez donc I CV pour faire la touche d'attente. Dans le cadre du processus circulaire, je vais attendre dix millisecondes et zéro xFF égal à la méthode ORD zéro xFF égal à la méthode ORD À l'intérieur des rondelles, je vais passer Q, puis je veux briser la boucle Ensuite, en dehors de la boucle While, je vais relâcher le capteur Méthode de déverrouillage du capuchon, point de la cabine, déverrouillage. De plus, je vais détruire toutes les fenêtres après avoir publié les programmes de type CV à point, détruire toutes les fenêtres. Maintenant. Maintenant, dans cette boucle while, je vais convertir le BGR en cadre RGV car par défaut, OpenCV lit notre cadre Mais pour la détection de phase, nous avons besoin d'un cadre RGV. Voici donc notre type de cadre de soulignement RGB. Cadre RV égal à CV à deux points, couleur CVT. Ensuite, à l'intérieur des tours, je vais d'abord fournir le cadre lui-même comme source, un cadre de type, puis une virgule. Ici, je vais passer le CV deux Nous devons transmettre le code couleur, qui est la couleur BGR RGV car nous allons convertir une grande image en image RGV C'est ça. Ensuite, nous devons extraire l'emplacement de la phase, ainsi que les codages de phase Pour cela, je vais définir deux autres variables. Dans notre première phase variable de type Imo, soulignez les emplacements. Emplacements de phase équivalents à la détection de phase, point, point, méthode de localisation de phase, emplacements de soulignement de phase. Ensuite, à l'intérieur des versets ronds, je vais passer le cadre RGV (cadre GV) Après avoir extrait l' emplacement de phase de la trame RGV, nous devons également extraire les codages de phase Pour cela, je vais définir une autre variable : les encodages de soulignement. Ajustez les encodages égaux à la reconnaissance de phase de type herm, à partir de la reconnaissance de phase, I 12, désolé, vous devez également exécuter la reconnaissance de phase, et non la détection, la reconnaissance non Celui-ci. À l'aide du module de reconnaissance de phase, nous extrayons ici l'emplacement de la phase Ensuite, à l'aide du module de reconnaissance de phase, nous allons extraire les codages de phase Ici, je vais lier la reconnaissance de phase, point, je vais taper des codages de phase Cette méthode. Ensuite, à l'intérieur des presses rondes, nous devons d'abord passer, nous devons passer le cadre RGV, taper le cadre RGV, virgule, puis je vais passer cet emplacement de phase variable, les emplacements de phase, emplacements de phase Je vais régler celui-ci. Maintenant, permettez-moi de vous expliquer en gros ce que cela va faire. emplacements de phase retracent les coordonnées de toutes les phases détectées dans la trame, et notre codage de phase calcule codages de phase à 12 dimensions pour chaque phase Nous avons maintenant la localisation de phase et le codage de phase. Ensuite, nous devons reconnaître la phase. Pour cela, nous allons utiliser un follow, mais pas dans ce tutoriel. Et dans la prochaine partie de ce tutoriel, nous allons masquer la partie restante Merci d'avoir regardé cette vidéo, restez connectés pour la prochaine. 4. Boucle principale qui va reconnaître le visage: Bonjour les gars. C'est bon de te revoir. Il s'agit de la troisième partie de ce tutoriel, et ici nous allons exécuter une boucle. Nous allons exécuter la boucle principale qui va reconnaître la phase. Pour cela, nous allons utiliser follow, mais avant, je vais taper un single et commenter, et je vais reconnaître les phases. Après cela, nous devons commencer le suivi. Nous devons exécuter une boucle à quatre pour chaque phase détectée. Je vais donc taper pour les presses rondes, je vais prendre une variable pour les coordonnées, une autre en haut, une virgule à droite En bas, t. Après cela, c'est l'encodage. Encodages de phase. Encodage Fizz en Z, IP Z à l'intérieur de la passe ourlée, de la phase, de l'emplacement, des emplacements des visages, des encodages Fizz, des encodages Ensuite, à l'intérieur de cette boucle à quatre, mais laissez-moi vous expliquer ce que je viens de faire ici. Quelle est la signification de ces quatre boucles ? En gros, nous examinons ici toutes les phases détectées. Ces boucles itèrent sur chaque phase détectée. Ici, les emplacements de phase contiennent coordonnées encadrées des phases, qui se trouvent dans le cadre, et les codages de phase contiennent des vecteurs de caractéristiques faciales pour chaque Fondamentalement, le module de reconnaissance de phase utilise 128 points vectoriels pour identifier la phase, puis nous utilisons la méthode Zip Il va associer les emplacements de chaque phase à son encodage, et en haut à droite et en bas se trouvent les coordonnées utilisées pour dessiner un rectangle autour de la face Ensuite, à l'intérieur de ces quatre boucles, nous devons trouver les correspondances pour comparer les visages. Pour cela, je vais déclarer une autre variable appelée matches. Match est égal ici. Je vais utiliser une méthode appelée comparaison de phase à partir de la reconnaissance de phase. Donc, reconnaissance des phases, comparaison des phases, comparaison des phases Ensuite, dans le round ss, ici, je vais passer deux variables au total. non phasés, codages non phasés et codage de phase Codage de phase. Il compare les codages de phase actuels (phase connue avec les codages non phasés Comme vous le savez, dans nos codages hors phase, toutes les coordonnées de phase et leurs caractéristiques sont indiquées ici à partir de ces images de phase connues telles que Meloni, Modi, Trudeau, Tramp, Il va comparer la phase en cours avec les images de phase connues. Si vous ne trouvez aucune correspondance, je veux la nommer inconnue. Nom de domaine égal à inconnu à l'intérieur du double parcours non Elle sera remplacée si la phase connue n'est pas trouvée. En gros, il s'agit du nom d'étiquette par défaut. Ensuite, nous devons utiliser la distance la plus courte pour obtenir le meilleur match. Pour cela, nous devons calculer la distance. Donc voilà, je vais taper un autre single et une autre commande et je vais passer à utiliser la distance la plus courte pour obtenir la meilleure correspondance. Je vais taper un nom de variable et le nom notre variable est les distances de phase. Distances de sous-détection de phase Pour calculer la distance, nous devons utiliser une méthode issue de la reconnaissance de phase, à savoir la distance de phase, la reconnaissance de phase du type somme, la méthode de la distance de phase par points, la distance Ensuite, à l'intérieur de l'évidement rond, nous devons comparer les codages non phasés avec les codages phase actuels, les codages non Virgule, encodages de phase, codages de phase . Codage de phase. Fondamentalement, cette fonction calcule la distance eclédienne entre la phase actuelle et la phase Une distance similaire signifie plus de similitude, et nous utilisons cette méthode pour trouver la meilleure correspondance à partir des phases connues. Nous devons maintenant exécuter une condition I pour assurer qu'il existe au moins une phase connue à comparer. Ici, je vais taper I lane à l'intérieur de la distance ronde par rapport à la distance de phase, distance , supérieure à zéro, puis insérer cette condition IP, puis dans cette condition IP, nous devons obtenir l'indice de plus petite distance pour la meilleure correspondance possible. Je vais donc définir une autre variable, et notre variable est basée sur undersce match, underscore, index Ici, je vais exécuter Je vais égaler les distances de phase avec le point Arg, c'est-à-dire celui-ci. Cette méthode va renvoyer l'indice de la plus petite distance pour la meilleure correspondance possible, et nous l'avons défini dans cette variable. Maintenant, si la correspondance est trouvée à partir du meilleur index de correspondance , nous devons remplacer le nom inconnu par ce nom de fichier. Je veux dire ce nom de fichier. S'il s'agit d'un tram, alors nous devons le nommer Tram. Si c'est Trudeau, nous devons le nommer Trudeo Donc, pour cela, je vais utiliser la condition HIP dans cette condition IP. Tapez les correspondances IP dans cette base carrée, je vais passer le meilleur indice de correspondance, puis dans cette condition HIP, je vais remplacer la variable name Ensuite, le nom devient égal aux noms de phase connus à l'intérieur des bases carrées à partir de celui-ci, je veux mettre le meilleur indice de correspondance, le meilleur indice de correspondance. S'il trouve la correspondance, il va mettre le nom. Ensuite, nous devons dessiner les rectangles. Nous devons dessiner les rectangles. Autour du visage. Pour cela, en dehors de cette condition IP. En dehors de cette condition IP, je vais utiliser la méthode du rectangle, rectangle à deux points similaire à tit CV. Et dans le RoundResf je vais fournir le nom du cadre dans lequel nous allons dessiner les rectangles, c'est-à-dire le cadre dessiner les rectangles, c'est-à-dire le Ensuite, nous devons définir la position. Comme vous le savez, nous extrayons déjà les positions supérieure et inférieure du portable pour dessiner le rectangle. Dans un premier temps, nous devons fournir le coin supérieur gauche. Ici, à l'intérieur des bretelles rondes, je vais fournir le laboratoire de valeur du laboratoire, puis je vais passer à la valeur, en haut Ensuite, nous devons définir l'autre coin, qui est en bas à droite, qui est en bas à droite. À l'intérieur des bretelles rondes, je vais taper en bas à droite Après cela, nous devons définir la couleur de ce rectangle. À l'intérieur des bretelles rondes, je vais utiliser ce code couleur B, pour le bleu, je vais utiliser zéro pour G pour le vert, je vais utiliser 255 et pour le rouge, je vais utiliser zéro à nouveau. Ensuite, nous devons fournir l'épaisseur de cette bordure, qui est de deux. Après cela, dessinez le rectangle. Vous devez également mettre le texte, le nom de cette personne. Je vais utiliser la méthode put text, un type CV à deux points, put text. Dans le RoundSSF, nous devons fournir le cadre de nom dans lequel nous allons placer le texte Ensuite, nous devons fournir le texte, qui est le nom. Ensuite, nous devons définir la position pour définir la position du texte. Ici, à l'intérieur de la brosse ronde, nous allons commencer le texte par le côté gauche, le lever et la virgule C'est pour les Xs et pour les XS, commençant par le haut POP, je vais passer à moins dix films Autocoma, nous devons définir la police de caractères. Et ici, je vais utiliser CV à deux points, CV à deux points, font hoch simplex, cette police Ensuite, nous devons définir l'échelle de police. Ici, je vais utiliser 0,8. Ensuite, nous devons définir la couleur. Nous devons définir la couleur dans laquelle nous voulons afficher la police, et je vais utiliser la même couleur. Nous utilisons donc zéro virgule 255 virgule zéro. couleur crème, puis ils veulent fournir l'épaisseur du gras qui est de deux, c'est bon pour chacun, et c'est tout. Après cela, nous devons afficher. Nous devons afficher le cadre en utilisant la méthode IMF. En dehors de la boucle automnale, je vais exposer le visage. Donc, le CV 2 a enseigné la méthode IMF. Je suis sûre qu'à l'intérieur des robes rondes vous voulez d'abord donner un nom à la fenêtre et son nom est reconnaissance faciale. Ensuite, Apacmo, nous devons afficher le cadre, le cadre réel que nous voulons afficher Et je vais sous-traiter ce fichier. Nous avons donc terminé. Et avant d'exécuter ce code dans mon terminal, je souhaite également mettre mon propre visage dans cette liste non phasée de ce dossier. J'ai donc mis ma photo sur cette liste. Cette photo est prise depuis ma webcam, et je vais également utiliser cette photo. Nous avons maintenant un total de cinq phases à identifier. Combattons donc le code définissons ce fichier et exécutons ce code dans notre terminal. Maintenant, exécutons le code. Je vais donc appuyer sur le bouton Exécuter. Après avoir appuyé sur le bouton Exécuter, nous devons attendre un certain temps pour démarrer la webcam. Ensuite, comme vous pouvez le voir , ma webcam démarre. Comme vous pouvez le voir, il reconnaît instantanément mon visage. Il crée une boîte carrée autour de mon visage, et au-dessus de la boîte carrée, il imprime mon nom, joint. Et si j'essaie de vous montrer d'autres visages, je les imprime déjà sur mon clavier. Et si je le montre devant la caméra, comme vous pouvez le voir, il reconnaît également d'autres visages. Il a reconnu les autres leaders mondiaux tels que Modi. Et si je passe à la phase suivante, je vais donc changer de visage, comme vous pouvez le voir, pour qu'il reconnaisse également le visage du président Trump. De même, si je change l'image, vous verrez qu'elle a reconnu le Canada comme l'ancien premier ministre Justin Trudeau. Comme vous pouvez le voir, nous avons suivi, il a également reconnu le visage, puis voici notre dernier rythme Georgia Malone Il a également reconnu ses caractéristiques spéciales, nous avons donc bien fait notre travail. J'espère que vous savez maintenant comment créer notre propre modèle de reconnaissance faciale à l'aide d'Open CP Merci d'avoir regardé cette vidéo. Restez à l'affût de notre prochain projet.