Blog
Alineamiento de caras
- Publicado por: Rafael Fernandez
- Categoría: Blog DLib OpenCV Procesamiento de Imagenes

-Aquí veremos un ejemplo de alineamiento de caras en Python.
-Igualmente, te dejamos el código y los requisitos para correrlo.
Con el objetivo de normalizar las marcas faciales para un posterior análisis, es fundamental en este proceso realizar un alineamiento de caras.
Alineamiento de caras en Python
Aquí el ejemplo con el código de alineamiento de caras:
Requisitos para correr el algoritmo
- cv2 (librería openCV)
- dlib (Un juego de herramientas para hacer aplicaciones de learning machine y analisis de datos para el mundo real)
- archivo : shape_predictor_68_face_landmarks.dat (lo puedes descargar desde este link)
Código para Alineamiento de caras
El código para alinear caras es sencillo y simple:
from imutils.face_utils import FaceAligner from imutils.face_utils import rect_to_bb import imutils import dlib import cv2 PREDICTOR_PATH = "shape_predictor_68_face_landmarks.dat" # Inicializa el detector de cara de dlib (HOG-based) y luego crea # El factor predictivo de la marca facial detector = dlib.get_frontal_face_detector() predictor = dlib.shape_predictor(PREDICTOR_PATH) fa = FaceAligner(predictor, desiredFaceWidth=256) # Cargar la imagen de entrada, redimensionarla y convertirla a escala de grises image = cv2.imread('foto.png') image = imutils.resize(image, width=800) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # Mostrar la imagen de entrada original y detectar las caras en la escala de grises # Image cv2.imshow("Input", image) rects = detector(gray, 2) # Loop sobre las detecciones de la cara for rect in rects: # Extraer el ROI de la cara * original *, luego alinear la cara # Usando hitos faciales (x, y, w, h) = rect_to_bb(rect) faceOrig = imutils.resize(image[y:y + h, x:x + w], width=256) faceAligned = fa.align(image, gray, rect) import uuid f = str(uuid.uuid4()) cv2.imwrite("foo/" + f + ".png", faceAligned) # Mostrar las imágenes de salida cv2.imshow("Original", faceOrig) cv2.imshow("Aligned", faceAligned) cv2.waitKey(0)
El código se compone de 1 ciclo for donde se:
- Detecta las marcas faciales y se gira la imagen con estas funciones
- from imutils.face_utils import FaceAligner
- from imutils.face_utils import rect_to_bb
No olvidéis cambiar el vídeo en la línea 18 y de tener en una misma carpeta el vídeo, el código y el archivo shape_predictor_68_face_landmarks.dat
Este código también puede servir para aquellas personas que siempre salen en las fotos con la cabeza girada. Los famosos lo suelen hacer mucho y por tanto también muchas personas que quieren ser famosas, aquí el ejemplo de una de las hermanas Kardashian donde le hemos alineado su cara:
➡ Si has llegado hasta aquí enhorabuena. Continúa aprendiendo con nosotros en nuestro curso de Dlib y OpenCV
[…] Share Tweet Google+ Email Prev Article Next Article […]