Android FaceDetector.Face Углы Эйлера равны 0 - PullRequest
17 голосов
/ 11 мая 2011

Я пытаюсь получить угол Эйлера Лица, который определяется FaceDetector.

Вот что я использую для вывода в Logcat:

Log.v("debug", " X: " + face.pose(Face.EULER_X) + " Y: " + face.pose(Face.EULER_Y) + " Z: " + face.pose(Face.EULER_Z) );

Но он всегда возвращает 0.0 для всех трех, независимо от того, под каким углом находится лицо. Есть идеи почему?

Ответы [ 3 ]

5 голосов
/ 05 июня 2012

Да, FaceDetector из API 1 никогда не возвращает угол позы. Вы можете проверить исходный код для проверки.

Более новый FaceDetectionListener из API 14 вернет угол позы, но сейчас он доступен только на ограниченном количестве устройств. Даже все устройства с API 14 не могут его использовать. Вы должны вызвать getMaxNumDetectedFaces () , чтобы узнать, поддерживает ли ваше устройство этот API.

Вы можете поочередно попробовать использовать OpenCV. Для этого есть несколько вариантов: http://code.opencv.org/projects/opencv/wiki/OpenCV4Android и http://code.google.com/p/javacv/. По моему опыту, они не стоят хлопот, если вам действительно не нужен угол позы.

0 голосов
/ 23 октября 2018

Установите детектор setMode на ACCURATE_MODE

Вот пример, который работал для меня в Котлине:

val detector = FaceDetector.Builder(context)
            .setClassificationType(FaceDetector.ACCURATE_MODE)
            .setMode(FaceDetector.ACCURATE_MODE)
            .setTrackingEnabled(true)
            .build()
0 голосов
/ 30 мая 2012

Здесь есть несколько похожих вопросов.Проверьте первый ответ по этой ссылке:

Значения позы Android Facedetector всегда равны 0

И смотрите ниже для тех, кто говорит, что они решили проблему:

Android Face Detection

...