traslacion - Android FaceDetector.Face los ángulos de Euler son 0 todo el tiempo
matrices de traslacion (3)
Configure el detector setMode
en setMode
Aquí hay un ejemplo que me funcionó en Kotlin:
val detector = FaceDetector.Builder(context)
.setClassificationType(FaceDetector.ACCURATE_MODE)
.setMode(FaceDetector.ACCURATE_MODE)
.setTrackingEnabled(true)
.build()
Estoy intentando obtener el ángulo de Euler de una cara que es detectado por FaceDetector.
Aquí está lo que uso para enviar a Logcat:
Log.v("debug", " X: " + face.pose(Face.EULER_X) + " Y: " + face.pose(Face.EULER_Y) + " Z: " + face.pose(Face.EULER_Z) );
Pero siempre devuelve 0.0 para los tres, sin importar en qué ángulo esté la cara. ¿Alguna idea de por qué?
Hay algunas preguntas similares aquí. Echa un vistazo a la primera respuesta de este enlace:
Los valores de pose de Android Facedetector son siempre 0
Y vea a continuación alguien que dice que resolvió el problema:
Sí, el FaceDetector de API 1 nunca devuelve un ángulo de pose. Puedes mirar el código fuente para verificar.
El nuevo FaceDetectionListener de API 14 devolverá un ángulo de postura, pero ahora solo está disponible en un número limitado de dispositivos. Ni siquiera todos los dispositivos que ejecutan API 14 pueden usarlo. getMaxNumDetectedFaces() llamar a getMaxNumDetectedFaces() para ver si su dispositivo admite esa API.
Alternativamente puede intentar usar OpenCV. Un par de opciones para eso son http://code.opencv.org/projects/opencv/wiki/OpenCV4Android y http://code.google.com/p/javacv/ . En mi experiencia, no valen la pena la molestia a menos que realmente, realmente necesites el ángulo de postura.