Reconocimiento de rostros con Python y OpenCV | Jayanta Sarkar | Skillshare

Velocidad de reproducción


1.0x


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

Reconocimiento de rostros con Python y OpenCV

teacher avatar Jayanta Sarkar, Behind the Code: Jayanta Sarkar

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      INTRODUCCIÓN

      1:05

    • 2.

      Instalar bibliotecas y leer el archivo de imagen

      12:55

    • 3.

      Configuración de MediaPipe y detección de rostros

      8:47

    • 4.

      Bucle principal que va a reconocer la cara

      12:32

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

14

Estudiantes

--

Proyectos

Acerca de esta clase

¿Estás listo para llevar tus habilidades de visión artificial al siguiente nivel? En este curso práctico basado en proyectos, aprenderás a construir un reconocidor multifacial en tiempo real con Python, OpenCV y la biblioteca face_recognition.

Tanto si quieres aprender a crear una máquina de reconocimiento facial como si eres un desarrollador de Python o un estudiante de visión computacional, este curso te guiará paso a paso para crear un sistema de reconocimiento facial potente y práctico capaz de detectar e identificar múltiples rostros en tiempo real con ayuda de tu cámara web.

Conoce a tu profesor(a)

Teacher Profile Image

Jayanta Sarkar

Behind the Code: Jayanta Sarkar

Profesor(a)

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... Ver perfil completo

Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. INTRODUCCIÓN: Hola, chicos. Es bueno verte de vuelta. Una vez más, estoy de vuelta con una nueva clase relacionada con la visión por computadora. Hoy en esta clase, vamos a crear reconocimiento de fase en tiempo real con la ayuda de Open Civil Library y Python Hola. Mi nombre es Jonatha Shorter Soy Desarrollador web Fullstack Programador Python e instructor online Puede detectar múltiples fases e identificar el pase al mismo tiempo usando nuestra webcam. Déjame mostrarte la demostración de lo que vamos a construir hoy en este proyecto. Como pueden ver, nuestro programa reconoce con éxito mi fase. También reconoció la fase del primer ministro Modi. Entonces reconoció la fase de Donald Trump. Después de eso, reconoció la fase de Justin Trudeau, y por fin, reconoció la fase Georgia Meloni Nuestro programa es muy capaz detectar y reconocer fases. Para crear este proyecto, vamos a utilizar tubería de medios y módulo de reconocimiento de fase partir del siguiente tutorial, vamos a iniciar nuestra codificación. Vamos a comenzar con la importación de pasivos. 2. Instalar bibliotecas y leer el archivo de imagen: Entonces finalmente, estamos en mi visor Studio editor de código. Y como puedes ver en mi directorio de trabajo actual, ya creo un nombre de archivo Python reconocedor punto Pi y una carpeta Un nombre de carpeta conocido subrayado caras. En esa carpeta, tenemos algunas imágenes. Tenemos imagen de Georgia Meloni. Tenemos imagen de Naren Romoi. Tenemos imagen de Justin Trudeau y por fin, tenemos imagen de Donald Tram Estos son todos de paso bien conocidos en todo el mundo, y para nuestro reconocedor, entrenamos nuestro modelo con esas fases Ahora, volvamos al reconocedor punto Pi cinco. Y al principio, voy a importar los módulos importantes. Al principio, necesitamos importar módulo OS, tipo Sim, importar OS. Mediante este módulo, podemos acceder a nuestros directorios de trabajo, de lo contrario, las carpetas. Entonces necesitamos importar otro módulo llamado CV dos. Este es el módulo principal. Tipo Simu, importación, cv dos. Con eso, necesitamos ingresar otro módulo. Pero primero, necesitamos descargar este módulo, y nuestro nombre de módulo es el reconocimiento de fase. Abramos el Shell de Windows Power e intentemos descargar este módulo. Para descargar este módulo, solo necesitas escribir, turbar, instalar, y nuestro módulo es el reconocimiento de fases Entonces necesitas presionar Enter. Después de golpear Enter, como puedes ver, requisito ya satisfecho porque ya descargo este módulo, pero podrías enfrentar algún error por este módulo, porque este módulo vienen con algunas dependencias como Nampi, Pillow Pero en tu caso, puedes obtener error debido a este módulo DL, y necesitamos instalar este módulo manualmente. Déjame mostrarte cómo podemos instalar este módulo. Para resolver el problema, basta con abrir su navegador y buscar eliminar Bien paquete enlace de descarga. Entonces te proporciona este enlace, este enlace de Github, y necesitas abrir este enlace de Github. Elimina el archivo HL de punto binario compilado y necesitas descargar este archivo Wheel. Si hago clic en este archivo, déjame mostrarte, como puedes ver, aquí proporciona múltiples archivos HL para múltiples versiones de Python. Si estás usando la versión 3.10, entonces puedes usar este archivo Wheel Si usas la versión 3.7, entonces puedes usar este archivo Well. Estoy usando 3.11, así que descargo este Para descargarlo para descargarlo, solo tiene que seleccionar su versión de Windows. Voy a usar este y hago clic en él. Después de eso, debe hacer clic en Descargar archivo RAW. Después de hacer clic en el botón Descargar, como puedes ver, se descarga a esta carpeta, esta carpeta de Descarga. Se descarga a esta carpeta de descarga. Ahora, déjame mostrarte cómo podemos instalar este archivo WL usando Windows Power Shell. Al principio, es necesario copiar esta ruta de archivo. Copio la ruta exacta del archivo, y voy a abrir mi Shell de Windows Power. Y como pueden ver, yo encendido en mi Windows Power Shell. Para descargar este archivo WL, primero, necesitas escribir, peep, instalar, luego necesitas usar el espacio y necesitas usar códigos de espiga Luego dentro de los códigos de espiga, es necesario poner la ruta del archivo Después de eso, debe usar Ein, luego debe proporcionar el nombre del archivo. Para proporcionar el nombre fino, voy a copiar el nombre fino exacto. Entonces a partir de aquí, voy a copiar el nombre exacto del archivo con la extensión y lo voy a pegar aquí, Control V, y necesitamos darle a Enter para descargar este módulo en nuestro sistema. Simplemente presiona Enter y va a computar tu proceso de descarga. Ya lo descargo, así que no voy a volver a descargarlo. Así es como puedes descargar cualquier archivo Hill en tu máquina local. Ahora, vayamos al editor de código. Entonces después de instalar el módulo DL, ahora puede instalar módulo de reconocimiento de fase en su sistema Así que solo escriba PIP instalar reconocimiento de fase. Necesitas seguir este método solo si tu sistema no es capaz de descargar el módulo D automáticamente. Importemos el módulo de reconocimiento de fase en nuestro cinco, algún tipo Import y nuestro nombre de módulo es reconocimiento de fase Aparte de eso, necesitamos instalar otro módulo, que es media Pipe. Para instalar el módulo media pyte, es necesario escribir este comando Pep Instalar OpenCB Python espacio media Pipe. Si presionas Enter, como puedes ver, requisito ya satisfecho porque ya descargo este módulo en mi sistema. Vamos a introducir el módulo en mi sistema. Algún tipo de importación, y voy a importar medios Pipe como MP. Eso es. Después de importar todos los módulos necesarios, necesitamos cargar las caras conocidas. Quiero decir, necesitamos cargar todas las caras conocidas como Meloni Modi, Trudo y Tranvía Recuerda, puedes usar tanto pase que quieras. Depende de ti. Entonces aquí voy a escribir un solo comando cargar fases conocidas. Después de eso, voy a declarar dos variables. Para almacenar las fases conocidas, necesitamos definir dos variables, básicamente dos listas. Nuestro primer nombre de variable es conocido unc phase, bajo sco, codificaciones, igual a I lista vacía Entonces voy a definir otra variable que se conoce nombre de fase conocido bajo sco, fase, bajo codificaciones sco, underscoename Nombres iguales a espacios en blanco. Nuestras primeras variables almacenan las codificaciones numéricas de cada pasada conocida y las segundas variables almacenan los nombres nombrados correspondientes a cada pasada En nuestra primera lista, vamos a almacenar las codificaciones numéricas y en nuestra segunda variable, vamos a almacenar el nombre de las imágenes, y va a obtener todos los nombres del nombre fino como Meloni Modi Trudeau tranvía I' va a tomar el nombre de la imagen como nombre A continuación, necesitamos revisar todos los archivos en esta carpeta de fase conocida. Para eso, vamos a usar for loop. Déjame mostrarte cómo. Sum rotyeFlMe en s punto, voy a usar Entonces dentro de los reces redondos voy a proporcionar el nombre de la carpeta que es no fase, K Wn subrayado fase, Básicamente, este bucle de cuatro va a mirar a través cada archivo dentro de la carpeta nonpas Luego dentro del bucle cuatro, necesitamos construir la ruta de archivo completa para cada imagen. Quiero decir aquí, nombre de archivo representan imágenes, el archivo de imagen, que está dentro de esta carpeta nonpas Miramos a través de cada imagen. Entonces necesitamos construir la ruta completa del archivo, así que voy a definir otra variable llamada PAT. Pero igual a aquí, voy a usar la función Join. Escriba Os path dot join. Luego dentro del hueco redondo, primero, necesitamos proporcionar el nombre de la carpeta, y nuestro nombre de carpeta no es caras. No caras y apricoma necesitamos proporcionar lo que necesitamos para proporcionar el nombre del archivo Voy a pasar la variable de nombre final. Nombre del archivo. Se va a unir el non pass y el archivo actual para obtener la ruta completa del archivo de la imagen. Supongamos que para Meloni, va a obtener el nombre de la carpeta non phase, luego va a agregar la ruta del archivo, meloit JPG A continuación, necesitamos cargar la imagen en módulo de reconocimiento de fase Para eso, voy a definir otra variable llamada image llamada image. Imagen igual a aquí, voy a escribir punto de reconocimiento de fase y a partir de reconocimiento de fase, voy a llamar a un método llamado load image file Cargar archivo de imagen. Después dentro de las rotondas voy a proporcionar la variable path Básicamente, carga el archivo de imagen en la memoria en un formato que la biblioteca de reconocimiento de ritmo puede procesar Básicamente, detrás de escena, utilizó el callejón Nampi A continuación, necesitamos obtener las codificaciones de fase. Para eso, voy a definir otra variable llamada codificaciones Codificaciones iguales a reconocimiento de fase. Punto, voy a usar desde la reorganización de frases, voy a usar codificaciones de fase Luego dentro de las rotondas, necesitamos proporcionar la imagen variable de imagen Y voy a poner estos cinco. Se trata de buscar todas las fases en la imagen y generar una codificación decimal 128 para cada imagen. Básicamente, devuelve una lista. Aunque sólo haya una fase, aún así devolverá una lista. Ahora bien, si se encuentra el ritmo, necesitamos establecer la codificación de fase a esta lista y el nombre pas a esta lista. Para eso, aquí, voy a usar condición IP. Si codificaciones, entonces dentro de esta condición IP, entonces voy a anexar las codificaciones a Entonces tipos, codificaciones no fase punto append función, append luego dentro de la resis redonda, soy Dentro del receso cuadrado, voy a proporcionar cero. Básicamente, toma la primera codificación de fase que se encuentra en esta imagen y la anexa a esta lista, codificaciones no de fase A continuación, necesitamos extraer la imagen finalmente. Para ello, vamos a utilizar el método de texto dividido. Aquí voy a escribir Os, punto, trasero, dividir texto. Después dentro de las llaves redondas, voy a proporcionar el nombre del archivo Después dentro de las llaves cuadradas, voy a pasar cero Básicamente, va a dividir el archivo en tupel como melon dot JPG Meloni es un artículo de tupel y dot JPG es otro artículo tapel Aquí pasamos cero, quiero decir vamos a extraer el primero, así que va a extraer sólo el nombre, meloni no la extensión Por eso usamos cero cabellos porque necesitamos extraer el nombre solamente. Y entonces tenemos que poner los nombres en esta lista. Para ello, necesitamos volver a usar el método append. Tipo de resumen nombres de fase conocidos método de adición de punto. Entonces dentro de las rotondas necesitamos anexar los nombres, pero antes voy a almacenarlo, lo voy a almacenar en una variable, que es nombre suma tipo nombre aquí, nombre voy a proporcionar este nombre de variable dentro de este método Nombre, y voy a poner esta pila. Básicamente, este código escanea a través del directorio de fases conocido. Y para cada imagen, la va a cargar, extraer la codificación de la primera fase, y establecer la codificación, también el nombre del archivo a los elementos de la lista a esta lista. Y asegúrate de que todas las imágenes que uses, tengan una fase clara. Si subes una imagen donde tienes múltiples fases en esa imagen, entonces va a extraer solo la primera fase. No va a reconocer toda la fase desde la imagen. Por eso recomendaré subir ese tipo de imágenes que tienen solo una fase, como las que tienen. Esta es la primera parte de este tutorial. Y la siguiente parte de este tutorial, vamos a trabajar en configuración de detección de fase de media Pi y vamos a iniciar la cámara. Gracias por ver este video, Estén atentos para la siguiente parte. 3. Configuración de MediaPipe y detección de rostros: Hola, chicos. Me alegro de verte de vuelta. Esta es la segunda parte de este tutorial. Y aquí, voy a decir detección de fase de tubería de medios. Entonces al principio, voy a escribir el comando único, que es media pipe, configuración de detección de fase. Después de eso, aquí, voy a definir dos variables, y nuestro primer nombre de variable es MP, media pipe, fase, detección de subrayado Igual a la fase de solución de punto de aminotipo P bajo detección de sco, detección de fase Underscoe Después de eso, necesitamos crear los utiles de dibujo. Para eso, voy a definir otra variable que es MP underscoe drawing, igual a p dot solution, drawing utiles, utiles Ahora bien, ¿cuál es el significado de estas dos variables? ¿Qué puedes hacer con eso? En nuestra primera detección de fase MP variable entendida, cargamos la solución de detección de fase Pi de medios, y en nuestra segunda variable, aquí proporcionamos función de utilidad para dibujar hito de fase en imágenes. Ahora, comencemos la cámara. Para eso, voy a definir otra variable, y nuestro nombre de variable es cap, CAP, Cap de otra manera capturada igual a aquí necesitamos llamar a CV dos punto método de captura de video, captura de video y dentro de la ronda de latón, tenemos que pasar la fuente. Como fuente, voy a pasar cero porque solo tengo una webcam en mi sistema. Después de eso, necesitamos inicializar el módulo de detección de fase con una confianza mínima Para eso, voy a escribir con MP, subrayado punto de detección de fase desde aquí, quiero ejecutar detección de fase Detección de fase. Entonces dentro de las rosas redondas aquí, voy a establecer la confianza mínima de detección. Hombre underscoe detección, confianza underscoe, igual a, y voy a Abe que voy a escribir como fase, detección de subrayado de fase Entonces dentro de ella, aquí, voy a correr un bucle while. Aquí voy a escribir y, cap dot se abre, se abre. Entonces dentro de este bucle while, el ins this while loop aquí, voy a declarar dos variables. El primero es para la variable Bullen y segundo es para el marco de la imagen, y ya sabes el proceso Soy tipo RET, coma, y para distorsionar el marco mut frame, igual al método cat read, Cap dot Entonces voy a decir p condición. Si no es cierto, quiero decir que yo no Bian valor es cierto, entonces dentro de esta condición IP, quiero romper el bucle. Pick, eso es. Ahora la pregunta es qué básicamente hice aquí. Al principio, abrimos nuestra cámara web predeterminada y la guardamos en una variable de cabina. Después de eso, Él inicializamos modelo de detección de fase con una confianza mínima de 0.6 y su uso con enunciado ya que es asegurar un manejo adecuado de los recursos Cierro automáticamente el modelo cuando termine. Después leo los fotogramas de la cámara continuamente usando Hilou. Cab punto es método abierto, comprueba si el flujo de video está activo, y esto es para valor booleano, la variable de fotograma captura la imagen de la cámara web y luego ve una condición Si no se recibe ninguna trama, entonces va a salir del bucle. De alguna manera nuestra conexión de cámara se rompe, entonces va a romper el bucle si no hay metraje. Después de eso, dentro de este bucle while, voy a establecer una condición IP. Entonces tipo I CV para hacer llave de espera. Dentro del proceso de ronda, voy a esperar diez milisegundos y y cero xFF igual a igual al método ORD, RD Dentro de las rotondas, voy a pasar Q, después quiero romper el bucle Después de eso, fuera del bucle while, voy a soltar al catcher. Método de liberación de tapa, punto de cabina, liberación. Además, voy a destruir toda la ventana después de liberar los programas tipo CV a punto, destruir todos los Windows. Ahora. Ahora dentro de este bucle while, voy a convertir BGR a marco RGV porque por defecto, OpenCV leyó nuestro frame en modo Pero para la detección de fase, necesitamos marco RGV Así que aquí están nuestro tipo de marco de subrayado RGB. Marco RV igual a CV dos puntos, color CVT. Después dentro de las rotondas, primero, voy a proporcionar el marco real como fuente, algún tipo frame, luego un coma, aquí voy a pasar CV dos Tenemos que pasar el código de color, que es color BGR RGV porque vamos a convertir big a RGV Eso es. A continuación, necesitamos extraer la ubicación de fase, también las codificaciones de fase Para eso, voy a definir dos variables más. En nuestras primeras ubicaciones variables de fase tipo Imo underscoe. Ubicaciones de fase equivalentes a detección de fase, punto, punto, método de ubicación de fase, ubicaciones de subscoe de fase Entonces dentro de los versos redondos aquí pasaré el marco RGV frame GV Después de extraer la ubicación de fase de la trama RGV, también, necesitamos extraer las codificaciones de fase Para eso, voy a definir otra variable phis underscoe Ajustar codificaciones iguales al reconocimiento de fase tipo herm, a partir del reconocimiento de fase, I 12, lo siento, también necesitas ejecutar reconocimiento de fase, no detección, reconocimiento no Éste. Usando el módulo de reconocimiento de fase, aquí extraemos la ubicación de la fase Después usando el módulo de reconocimiento de fase, vamos a extraer las codificaciones de fase Aquí, voy a atar el reconocimiento de fase, punto, voy a escribir codificaciones de fase Este método. Entonces dentro de las vueltas aquí, tenemos que pasar primero, necesitamos pasar el marco RGV, escribir marco RGV, coma, luego voy a pasar esta ubicación de fase variable, ubicaciones de fase, ubicaciones de fase Voy a fijar esta. Ahora déjame explicarte básicamente lo que básicamente va a hacer. Las ubicaciones de fase representan la coordenada de todas las fases detectadas en el marco, y nuestra codificación de fase calcula codificaciones de fase de 12 dimensiones para cada Ahora tenemos ubicación de fase y codificación de fase. A continuación, necesitamos reconocer la fase. Para eso, vamos a usar un follow, pero no en este tutorial. Y la siguiente parte de este tutorial, vamos a encubrir la parte restante Gracias por ver este video estad atentos para nuestro próximo. 4. Bucle principal que va a reconocer la cara: Hola chicos. Me alegro de verte de vuelta. Esta es la tercera parte de este tutorial, y aquí vamos a ejecutar un bucle. Vamos a correr el bucle principal que va a reconocer la fase. Para eso, vamos a usar follow, pero antes, voy a escribir un sencillo y comentar, y voy a reconocer fases. Después de eso, necesitamos comenzar el seguimiento. Necesitamos ejecutar un bucle cuatro a través de cada fase detectada. Entonces voy a escribir para dentro de las prensas redondas, voy a tomar alguna variable para las coordenadas, algún tipo top, coma derecha Abajo, t. después de eso, la codificación phis. Codificaciones de fase. Codificación de Fizz en Z IP Z dentro de la ronda de paso con dobladillo, fase, ubicación, ubicaciones de caras, codificaciones de fizz, codificaciones Entonces dentro de este bucle de cuatro, pero déjame explicarte este bucle fo lo que acabo de hacer aquí. ¿Cuál es el significado de este bucle de cuatro? Básicamente, aquí miramos a través de toda la fase detectada. Estos bucles iteran sobre cada fase detectada. Aquí, las ubicaciones de fase contienen coordenadas de caja delimitadora de fases, que se encuentran en el marco, y las codificaciones de fase contienen vectores de rasgos faciales para cada Básicamente el módulo de reconocimiento de fase utiliza 128 puntos vectoriales para identificar la fase, y luego usamos el método Zip Va a emparejar las ubicaciones de cada fase con su codificación, y arriba a la derecha, abajo solapadas son las coordenadas utilizadas para dibujar un rectángulo alrededor de la cara Después de eso, dentro de este bucle de cuatro, necesitamos encontrar los partidos para comparar las caras. Para eso, voy a declarar otra variable llamada coincidencias. Coincidencia es igual a aquí voy a usar un método llamado comparación de fase desde el reconocimiento de fase. Entonces reconocimiento de fase ti, fase puntos, fases comparadas Entonces dentro de la ronda ss, aquí, voy a pasar total dos variables. sin fase, codificaciones sin fase y codificación de fase Codificación de fase. Compara las codificaciones de fase actuales conocidas de fase con codificaciones no fase Como saben, en nuestras codificaciones no fase, aquí se cuentan todas las coordenadas de fase y sus características a partir de estas imágenes de fase conocidas como Meloni, Modi, Trudeau, Tramp, etcétera Se va a comparar la fase actual con las imágenes de fase conocidas. Si no encontraste ninguna coincidencia, entonces quiero nombrarla desconocida. Sutname igual a desconocido dentro del doble curso no Se sobrescribirá si no se encuentra la fase conocida. Básicamente, es el nombre de etiqueta predeterminado. Y a continuación, necesitamos usar la distancia más corta para el mejor partido. Para eso, necesitamos calcular la distancia. Entonces aquí, voy a escribir otro sencillo y comando y voy a pasar usar la distancia más corta para el mejor partido. Voy a escribir un nombre de variable y nuestro nombre de variable es distancias de fase. Distancias de subsuelo de fase para calcular la distancia, necesitamos usar un método de reconocimiento de fase, que es distancia de fase, reconocimiento de fase de tipo suma, método de distancia de fase de punto, distancia de fase Entonces dentro del rebaje redondo aquí necesitamos comparar con codificaciones no fase con codificaciones fase actual tipo, codificaciones no fase Coma, codificaciones de fase, codificaciones de fase . Codificación de fase. Básicamente, esta función calcula la distancia eclediana entre la fase actual y la fase conocida Distancia similar significa más similitud, y utilizamos este método para encontrar la mejor coincidencia a partir de las fases conocidas. Ahora necesitamos ejecutar una condición I para asegurar que haya al menos una fase conocida con la que comparar. Aquí voy a teclear carril I dentro de la distancia redonda versus fase, distancia de fase, mayor a cero, luego insertar esta condición IP, luego dentro de esta condición IP, necesitamos obtener el índice de distancia más pequeña para la mejor coincidencia posible. Así que voy a definir otra variable, y nuestra variable se basa undersce match, guión bajo, índice igual a aquí voy a ejecutar un método Voy a empatar distancias de fase punto Arg medio, éste. Este método va a devolver el índice de menor distancia para la mejor coincidencia posible, y lo establecemos en esta variable. Ahora bien, si la coincidencia se encuentra a partir del índice de mejor coincidencia, entonces necesitamos reemplazar el nombre desconocido por este nombre de archivo. Quiero decir este nombre de archivo. Si es tranvía entonces necesitamos llamarlo Tram si es Trudeau entonces tenemos que llamarlo Trudeo Entonces para eso, voy a usar condición HIP dentro de esta condición IP. Tipo I tipo IP coincide dentro de esta base cuadrada, voy a pasar mejor índice de coincidencia, luego dentro de esta condición HIP, voy a sobrescribir la variable name Entonces el nombre se vuelve igual a nombres de fase conocidos dentro de las bases cuadradas de él, quiero poner el mejor índice de coincidencia, mejor índice de coincidencia. Si encontró la coincidencia, entonces va a poner el nombre. Entonces necesitamos dibujar los rectángulos. Tenemos que dibujar los rectángulos. Alrededor de la cara. Para eso, fuera de esta condición IP. Fuera de esta condición IP, voy a usar el método rectángulo, similar tit CV rectángulo de dos puntos. Y dentro de las rondasF voy a proporcionar el nombre del marco en que marco vamos a dibujar dibujar los rectángulos, que Después de eso, necesitamos definir la posición. Como sabéis, ya extraemos la posición superior e inferior de vuelta para dibujar el rectángulo. Al principio, necesitamos proporcionar la esquina superior izquierda. Aquí dentro de los tirantes redondos, voy a proporcionar el laboratorio de valor de laboratorio y luego voy a pasar a valor, top A continuación, necesitamos definir la otra esquina, que es la parte inferior derecha, que es la parte inferior derecha. Dentro de los tirantes redondos, voy a escribir abajo derecho Después de eso, después de eso, necesitamos definir el color de este rectángulo. Dentro de los tirantes redondos, voy a usar este código coloreado B, para azul, voy a usar cero para G para verde, voy a usar 255 y para rojo, voy a usar cero de nuevo. Entonces necesitamos proporcionar el grosor de esta frontera, que es dos. Después de eso, dibuja el rectángulo, también, necesitas poner el texto, el nombre de esta persona. Voy a usar método put text, algún tipo CV dos punto, poner texto. Dentro de las rondasSF necesitamos proporcionar el marco de nombre en qué marco vamos a poner el texto Entonces necesitamos proporcionar el texto, que es nombre. Después de eso, necesitamos definir la posición para definir la posición del texto. Aquí dentro de los brrss redondos vamos a iniciar el texto desde el lado izquierdo, lift y coma Esto es para Xxs y para los xs, desde el top POP top, voy a menos diez película Autocoma, necesitamos definir la cara de la fuente. Y aquí, voy a usar CV dos puntos, CV dos puntos , fuente hoch simplex, esta Entonces necesitamos definir la escala de fuente. Aquí voy a usar 0.8. Después de eso, necesitamos definir el color. Tenemos que definir qué color queremos mostrar la fuente, y voy a usar el mismo color. Entonces usamos cero coma 255 coma cero. De color crema y luego quieren proporcionar el grosor de la grasa que es dos, es bueno para cada uno, y eso es todo. Después de eso, necesitamos exhibir. Necesitamos mostrar el marco usando el método IMF. Fuera del bucle de otoño aquí, voy a mostrar la cara. Así empatar CV dos enseñó FMI Mathod. Estoy seguro que dentro de los vestidos redondos al principio quieren dar un nombre para la ventana y su nombre es reconocimiento facial. Y luego Apacmo necesitamos mostrar el marco, el marco real que queremos mostrar Y voy a sub este expediente. Entonces ya terminamos. Y antes de ejecutar este código en mi terminal, también quiero poner mi propia cara en esta lista de no fases en esta carpeta. Entonces puse mi foto en esta lista. Esta foto es tomada de mi webcam, y voy a usar esta foto también. Ahora tenemos un total de cinco fases para identificar. Así que vamos a luchar contra el código y establecer este archivo y ejecutar este código en nuestra terminal. Ahora, vamos a ejecutar el código. Entonces voy a presionar el botón Ejecutar. Después de presionar el botón de correr, tenemos que esperar algún tiempo para iniciar la webcam. Después en algún momento, como pueden ver, inicia mi webcam Como puedes ver, al instante reconoce mi cara. Crea una caja cuadrada alrededor de mi cara, y encima de la caja cuadrada, imprime mi nombre, conjunta. Y si trato de mostrarte algunas otras caras, entonces en mi teclado, ya imprimo las caras. Y si lo muestro frente a cámara, como pueden ver, también se reconocen otras caras. Reconoció a los otros rostros líderes mundiales como Modi. Y si envío a la siguiente fase, entonces voy a cambiar la cara, como pueden ver, también reconoció cara del presidente Trump. la misma manera, si cambio la imagen, entonces se puede ver que reconoció Canadá ex primer ministro Justin Trudeau Como pueden ver, rastreamos, también reconoció la cara, luego llegar nuestro último ritmo Georgia Malone También reconoció sus características especiales, así que estamos muy bien hechos nuestro trabajo. Espero que ahora esté claro para ustedes, cómo podemos construir nuestro propio modelo de reconocimiento facial usando Open CP Gracias por ver este video. Estén atentos para nuestro próximo proyecto.