👨 Reconocimiento facial para varias personas a la vez 👩 | Python – OpenCV – Face Recognition
En el anterior post vimos como aplicar RECONOCIMIENTO FACIAL para identificar a una persona, en este tutorial, en cambio, podremos identificar varias personas a la vez. ✨ ¡Anímate a probarlo!.
CONTENIDO
Reconocimiento facial para varias personas a la vez
- Instalación de requerimientos
- ¡Vamos con la programación!
- Referencias
Reconocimiento facial para varias personas a la vez
En el anterior tutorial aplicamos reconocimiento facial para reconocer a una persona. En esta ocasión veremos como aplicar Face Recognition para identificar a varias personas a la vez. Para ello necesitaremos un conjunto de imágenes de los rostros que deseemos identificar, codificarlos, para luego compararlos y determinar de qué personas se trata.
Instalación de requerimientos
A continuación procedemos a usar pip para la instalación de los módulos que necesitamos.
pip install face-recognition pip install opencv-contrib-python
Si digitamos pip freeze
podremos ver todos los paquetes instalados.

Figura 1: Lista de los módulos instalados.
Face Recognition usa entre sus requerimientos DLIB, por lo que si estás en Windows y llegas a obtener un error al querer instalarlo, puedes ir al siguiente tutorial para resolverlo: ⚙️Como instalar DLIB en Windows | Python.
¡Vamos con la programación!
Para una explicación más detallada de los programas que veremos a continuación, por favor dirígete al video que he preparado en mi canal, en donde explico paso a pasito cada procedimiento efectuado. ¡Anímate a verlo 😉!.
A continuación tenemos el programa extracting_faces.py
que se usó para extraer los rostros de varias personas en distintas imágenes:
import cv2 import os imagesPath = "C:/Users/Desktop/faceRecognition2/images/input_images" if not os.path.exists("faces"): os.makedirs("faces") print("Nueva carpeta: faces") # Detector facial faceClassif = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml") count = 0 for imageName in os.listdir(imagesPath): print(imageName) image = cv2.imread(imagesPath + "/" + imageName) faces = faceClassif.detectMultiScale(image, 1.1, 5) for (x, y, w, h) in faces: #cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2) face = image[y:y + h, x:x + w] face = cv2.resize(face, (150, 150)) cv2.imwrite("faces/" + str(count) + ".jpg", face) count += 1 #cv2.imshow("face", face) #cv2.waitKey(0) #cv2.imshow("Image", image) #cv2.waitKey(0) #cv2.destroyAllWindows()
Ahora tenemos el programa f_recognition.py
que nos ayudará a llevar a cabo el reconocimiento facial mediante la comparación de rostros codificados:
import cv2 import os import face_recognition # Codificar los rostros extraidos imageFacesPath = "C:/Users/Desktop/faceRecognition2/images/faces" facesEncodings = [] facesNames = [] for file_name in os.listdir(imageFacesPath): image = cv2.imread(imageFacesPath + "/" + file_name) image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) f_coding = face_recognition.face_encodings(image, known_face_locations=[(0, 150, 150, 0)])[0] facesEncodings.append(f_coding) facesNames.append(file_name.split(".")[0]) #print(facesEncodings) #print(facesNames) ############################################## # LEYENDO VIDEO cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # Detector facial faceClassif = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml") while True: ret, frame = cap.read() if ret == False: break frame = cv2.flip(frame, 1) orig = frame.copy() faces = faceClassif.detectMultiScale(frame, 1.1, 5) for (x, y, w, h) in faces: face = orig[y:y + h, x:x + w] face = cv2.cvtColor(face, cv2.COLOR_BGR2RGB) actual_face_encoding = face_recognition.face_encodings(face, known_face_locations=[(0, w, h, 0)])[0] result = face_recognition.compare_faces(facesEncodings, actual_face_encoding) #print(result) if True in result: index = result.index(True) name = facesNames[index] color = (125, 220, 0) else: name = "Desconocido" color = (50, 50, 255) cv2.rectangle(frame, (x, y + h), (x + w, y + h + 30), color, -1) cv2.rectangle(frame, (x, y), (x + w, y + h), color, 2) cv2.putText(frame, name, (x, y + h + 25), 2, 1, (255, 255, 255), 2, cv2.LINE_AA) cv2.imshow("Frame", frame) k = cv2.waitKey(1) & 0xFF if k == 27: break cap.release() cv2.destroyAllWindows()
En el videotutorial se pueden apreciar los resultados obtenidos del reconocimiento facial con un video en vivo, como vemos a continuación:

Figura 2: Reconocimiento de varias personas en una misma imagen o fotograma.
Y bien, esto ha sido todo por el tutorial de hoy. ¡Espero que te haya gustado! 😊 Nos vemos en el siguiente… ¡Qué te vaya súper bien!.
Referencias
🎥 Video detección facial: https://youtu.be/J1jlm-I1cTs
📃 Documentación Face recognition: https://github.com/ageitgey/face_recognition
Imágenes/videos usadas en el video:
📎 https://www.pexels.com/es-es/foto/foto-de-personas-abrazandose-3228749/
📎 https://www.pexels.com/es-es/video/grupo-de-amigos-sonriendo-3248275/
cuando ejecuto el script f_recognition.py me sale este mensaje
Please install `face_recognition_models` with this command before using `face_recognition`:
pip install git+https://github.com/ageitgey/face_recognition_models
cuando ejecuto lo recomendado y vuelvo a ejecutar el script me sigue apareciendo, porque?
agradeceria tu ayuda
puede ser por la version de python , a mi me pasaba con la version 3.12 pero en la 3.9 ya no me da ese error