Está en la página 1de 21

Adrián Yair Ancajima Yangua

UNIVERSIDAD NACIONAL DE PIURA

FACULTAD DE CIENCIAS

Procesamiento De Señales Digitales I

Reconocimiento facial por cámara

Descripción del Código y cómo Funcionamiento de la Biblioteca Virtual

Percy Hilario Casas Lazo


OBEJTIVO

El objetivo general de este proyecto es desarrollar un sistema de reconocimiento

facial utilizando Python y el entorno de desarrollo PyCharm. El sistema estará diseñado

para identificar rostros en imágenes o video, y podrá ser utilizado en diversas

aplicaciones como seguridad, autenticación biométrica, análisis de emociones, entre

otros.
Descripción del Código y Funcionamiento del programa de reconocimiento facial

Descripción del programa: este programa de reconocimiento facial hecho en el entorno

de PyCharm con Python 3.12. Lo que hace este programa es registrar una imagen capturada por la

cámara de tu laptop o computadora (ordenador donde ejecutes el código) y se guardara la imagen

con un nombre ya ingresado anteriormente, luego vas a inicio de sesión y pones el nombre del

rosto con que esta guardado la imagen en el registro, para después con la cámara de tu ordenador

te captura y comprar con la imagen guardada anteriormente en registro y comparar si coincide, si

coincide entonces en Python Console dará tu nombre y la similitud de la imágenes comparadas

(esa similitud debe ser mayor a 0.98 es igual a 98%).

Librerías a Utilizar:

• Cv2 (pip install Opencv-python)

• Tkinter (pip install tk)

• Matplotlib (pip install matplotlib)

• MTCNN (pip install mtcnn)

• Os (viene cuando se instala Python)

Una vez instaladas librerías instaladas por la terminal con el comando “pip install”, después

verificamos que tengamos instalados la librería en la termina.


Luego de instalar en la terminal, abrimos PyCharm, ya después de crear el proyecto,

importamos o llamamos las librerías a usar

Pantalla Principal

Creamos una funcion para la pantalla principal:

Esto es para que salga la pantalla principal donde estará el inicio de turno y registrar

Creación de los botones para la pantalla principal

Opción para poder hacer el clic en la selección de registrar e iniciar turno, donde inicio de

turno (nos llevara a una función login()). Y Registro (Nos lleva a una funcion registro()).
Lo que quedaria así cuando ya lo depuramos

REGISTRO

Creamos la funcion para el botón Registro

Declaramos variables generales, como “usuario”, “usuario_entrada”, “pantalla1” y una

característica para el registro. Cabe recalcar que estas variables serán usadas en otras funciones.

Dimensión para la pantalla 2, cuando se haga clic a Registro


Empezamos a crear las entradas

Esto es para organizar la pantalla 2, código de la característica de la pantalla cuando

hacemos clic a Registro, como ingresar el nombre del usuario que se va a registrar, y declaración

de la variable “usuario” de tipo string.

Crear el botón para hacer el registro facial

Dejamos un espacio en vacío y creamos el botón “Registro Facial”, que aparte ese botón

nos llevara a la funcion registro_facial.


Funcion para almacenar el registro facial

Definimos como funcion a registro_facial, luego hacemos un video y capturamos el ultimo

fotograma y almacenar ese rostro del último fotograma donde se guarde por defecto en

“usuario.get”. Entonces tenemos que guardarlo en una variable en “usuario_img” y esa variable lo

convertimos en formato .jpg (es decir como imagen), luego hacemos una limpieza en registro para

próximos registros que se quieran hacer. Y mostramos en pantalla como registro exitoso.

Detectamos el rostro y exportamos los pixeles

Como esa imagen, muestra el rostro y cuerpo de la persona, en este script, hacemos que

solo detecte el rostro, primero hacemos la medidas o proporciones que quiere que el rostro detecte.

Primero leemos la imagen y la pasamos al detector y detectamos las caras, esto es gracias

a la librería MTCNN.
INICIO DE TURNO (login)

Funcion que asignaremos al botón login

Primeramente, creamos las variables globales como (pantalla2, verificacion_usuario,

usuario_entrada2), para usarlas para en la comparación, aquí ponemos características para la

pantalla 3, como el título, el tamaño de la pantalla, etc.


Ingresemos los datos

Cuando se inicia turno queremos que ponga el dato el usuario, y ese usuario lo vamos a

leer en usuario_entrada2 y lo empaquetamos.

Creación del botón para hacer el login facial

Dejamos un espacio en blanco, y creamos el botón “Empezar Con Sesión Facial” y este lo

enviara a la funcion “login_facial ()”.

Funcion para el login facial y captura de rosto

Luego de definir a “login_facial” como funcion, hacemos la captura de rostro, hacemos

como anteriormente, definimos la cámara del ordenador, capturamos en la cámara el rostro, para

luego almacenar esa imagen como login y vamos a sumar el “LOG.jpg”, para no sobrescribir la

foto que hemos guardo en el registro anteriormente y cerramos la ventana y limpiamos para que

no tener problemas con un nuevo usuario.


Funcion para guardar el rostro

En este código hace, es leer la imagen de login y guardamos esos pixeles en “cara_red”.

Dato importan: las imágenes guardadas tanto para el registro, como en el login, debe tener

la misma dimensión. Que este caso es de 150x200

Detectamos el rostro

En este script, es hacer la detección del rostro de la imagen guardada en “cara_red” para

que lo guardemos en la variable “img” y guarda solo el rostro. Ósea leer la imagen y detectar solo

el rostro. Esto es gracias a la librería MTCNN, para luego guardarlo en la variable “caras”.
COMPARACION DE IMAGENES

Funcion para comparar el rostro

Después de definir la funcion (orb_sim ()), donde agregamos la imagen que guardamos del

rostro en el registro y la imagen guardada en login, para así compararlas. Donde un objeto de

comparación, aparte creamos dos descriptores (descr_a y descr_b), para así extraer los puntos

claves de cada imagen, luego creamos un comparador de fuerza, para comparar los puntos claves

sacadas de cada imagen, y aplicar los comparadores a los descriptores.

Ahora, tenemos cierta números de puntos que se han extraído, creamos un “for”, para

extraer las regiones similares en base los puntos claves. Como hay regiones similares, entonces

hacemos una división, para poder exportar un porcentaje de similitud.


Importamos las imágenes y llamar funcion comparación

Ahora, en la variable “im_archivos”, vamos almacenar los archivos que tengamos en la

carpeta donde estamos ejecutando este programa, donde importamos la lista de archivos a través

de la librería “os”, Luego hacemos un “if”, donde el “usuario_login.jpg”, esta en archivos, entonces

lo que hacemos es leer los dos rostros extraídos de la imágenes de registro y login (en escala de

grises), y después a la variable “similitud”, asígnale el valor de similitud que nos entregue esta

funcion y le entregamos la dos imágenes.

Luego de todo ese proceso, hacemos un if donde la variable similitud es mayor igual a 0.9

y le mostrara en pantalla “Inicio de sesión exitoso”, el nombre del usuario, y la compatibilidad con

la foto del registro es de tanto tal.

Si es debajo de 0.9, entonces se mostrará en la pantalla, rostro incorrecto, la compatibilidad

de cuanto es, e incompatibilidad de rostro.

Y por último si no encontramos “usuario_login.jpg”, en archivos, entonces se mostrará en pantalla,


usuario no encontrado.
USO DEL PROGRAMA DE RECONOCIMIENTO FACIAL

Ejecutamos el script

Seleccionamos Registro y nos aparece una ventana

.
Ingresamos el nombre que se quiere registrar, en este caso mi nombre (Adrian Yair

Ancajima Yangua)

Ahora seleccionamos Registro Facial y nos tomos la foto por la cámara del ordenador
Hacen proceso de captura de rostro y la imagen de solo el rostro

(proceso de detección de rostro)

(imagen solo del rostro)


Sale en la ventana Registro Facial Exitoso

Volvemos a la ventana principal y seleccionamos Inicio de Turno, Luego colocamos

el nombre del usuario de la persona que queremos que reconozca, en este caso mi persona

(Adrian Yair Ancajima Yangua)

Seleccionamos Empezar Con Sesión Facial y se enciende la cámara de nuestro

ordenador para hacer el reconocimiento de la persona a través del proceso anterior y así,

comparar las imágenes


(Cámara del ordenador)

(proceso de detección de rostro y comparación de las imágenes)


Y nos sale en la ventana de login, Inicio de Sesión Exitoso

En la consola de Python en el entorno de PyCharm, nos sale en nombre de la persona

que se reconoció y la similitud de las imágenes que hay.

Muestra donde se guardan las dos imágenes para la comparación, en la carpeta del

proyecto
Dato importante: este se puede aplicar a varios registros y cuando inician turno,

pueden ingresar el nombre que le pusieron en el registro, por lo tanto, si inicias con un

nombre y cuando toman la captura no es la persona del nombre ingresado, el resultado es

“incompatibilidad de rostro”, y si no está registrado dicho usuario, les mostrara “usuario no

encontrado”.
CONCLUSION

En mi proyecto de reconocimiento facial, especialmente en la comparación de imágenes,

generadas por la cámara de mi ordenador, fue puesto en una aplicación en una sesión de

autenticación biométrica, que se centran en la detección y comparación solamente del rostro,

utilizando la librería de red neuronal como “MTCNN”, lo que llegamos a decir que esta

autenticación, es una forma de contribuir y aplicarlo en diversas empresas, casas, etc. Que nos

ayuda aportar en la sociedad, en especial en el tema de seguridad, y orden sobre el personal de una

empresa hacia sus empleados.

También podría gustarte