es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Imagen

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:

  1. Detectar todas las caras en la imagen y calcular sus puntos de referencia utilizando los métodos dlib.get_frontal_face_detector() y dlib.shape_predictor() de dlib.
  2. 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étodo getTriangleList() 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.

Tags:  , , ,

Answer

  1. Avatar for 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() y dlib.shape_predictor() de la biblioteca dlib. Luego, puedes usar el método cv2.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étodo getTriangleList() 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.

Comments are closed.