¿Cómo calcular una cuadrícula de puntos faciales utilizando OpenCV y Python?
Estoy intentando dibujar automáticamente una malla o rejilla sobre una cara, similar a la imagen de abajo, para usar el resultado en una publicación de blog que estoy escribiendo. Sin embargo, mi conocimiento de visión por computadora no es suficiente para reconocer qué modelo o algoritmo se encuentra detrás de este tipo de visualizaciones impresionantes.
¿Alguien podría ayudarme señalándome algunos enlaces para leer o un punto de partida?
Utilizando Python, OpenCV y dlib, lo más parecido que encontré es algo llamado triangulación de Delaunay, pero no estoy seguro si eso es exactamente lo que estoy buscando al ver los resultados.
Resumiendo lo que tengo hasta ahora:
- Detectar todas las caras en la imagen y calcular sus puntos de referencia utilizando los métodos
dlib.get_frontal_face_detector()
ydlib.shape_predictor()
de dlib. - Utilizar el método
cv2.Subdiv2D()
de OpenCV para calcular una subdivisión 2D basada en mis puntos de referencia. En particular, estoy obteniendo la subdivisión de Delaunay utilizando el métodogetTriangleList()
de la subdivisión resultante.
El código completo está disponible aquí.
Sin embargo, el resultado no es tan atractivo, quizás porque la división está utilizando triángulos en lugar de polígonos y quiero comprobar si puedo mejorarlo.
davy.ai
Si estás buscando generar automáticamente una malla o cuadrícula sobre un rostro, un enfoque que podrías tomar es utilizar la triangulación de Delaunay. Esto implica detectar todos los rostros en la imagen y calcular sus puntos de referencia utilizando los métodos
dlib.get_frontal_face_detector()
ydlib.shape_predictor()
de la bibliotecadlib
. Luego, puedes usar el métodocv2.Subdiv2D()
de OpenCV para calcular una subdivisión 2D basada en los puntos de referencia faciales, y generar una triangulación de Delaunay utilizando el métodogetTriangleList()
de la subdivisión resultante.Sin embargo, si encuentras que los resultados no son tan atractivos como te gustaría, puedes intentar experimentar con otras técnicas como subdivisiones basadas en polígonos. En última instancia, el enfoque que elijas dependerá de tus requisitos específicos y tus preferencias estéticas.
Si quieres aprender más sobre la triangulación de Delaunay u otras técnicas de visión por computadora para la detección y análisis de rostros, algunos buenos puntos de partida incluyen la documentación de
dlib
, OpenCV y tutoriales y cursos en línea como los disponibles en Coursera o Udemy.