Значения позы Android Facedetector всегда равны 0 - PullRequest
8 голосов
/ 01 апреля 2012

Поэтому я использую встроенные в facedector андроиды для обнаружения и определения положения лиц в растровом изображении.Прямо сейчас это работает и скажет мне: уверенность, eyesDistance и midpoint, но всякий раз, когда я пытаюсь получить позу, она всегда возвращает 0 независимо от того, какие изображения я пытаюсь использовать.

Это код, который я использую для получения позы:

poseString = "Pose: (" + getFace.pose(FaceDetector.Face.EULER_X) + ","
                        + getFace.pose(FaceDetector.Face.EULER_Y) + ","
                        + getFace.pose(FaceDetector.Face.EULER_Z) + ")";

А вот код, который я использую:

arrayFaces = new FaceDetector(picWidth, picHeight, NUM_FACES);
        arrayFaces.findFaces(sourceImage, getAllFaces);

        for (int i = 0; i < getAllFaces.length; i++) {
            getFace = getAllFaces[i];
            try {
                PointF eyesMP = new PointF();
                getFace.getMidPoint(eyesMP);
                poseString = "Pose: ("+ getFace.pose(FaceDetector.Face.EULER_X) + ","
                        + getFace.pose(FaceDetector.Face.EULER_Y) + ","
                        + getFace.pose(FaceDetector.Face.EULER_Z) + ")";
                EULER_X = getFace.EULER_X;
                EULER_Y = getFace.EULER_Y;
                EULER_Z = getFace.EULER_Z;      

                eyesDistance[i] = getFace.eyesDistance();
                eyesMidPts[i] = eyesMP;

                if (DEBUG) {
                    currentx = eyesMidPts[i].x;
                    currenty = eyesMidPts[i].y;
                    betweeneyes = getFace.eyesDistance();

                    Log.d("currentx", currentx + "");
                    Log.d("currenty", currenty + "");
                    Log.d("betweeneyes", betweeneyes + "");
                    Log.d("EULER", "EULER_X: " + EULER_X + "EULER_Y: " + EULER_Y + "EULER_Z: " + EULER_Z);

                    Log.i("Face", i + " " + getFace.confidence() + " "
                            + getFace.eyesDistance() + " " + "Pose: ("
                            + getFace.pose(FaceDetector.Face.EULER_X) + ","
                            + getFace.pose(FaceDetector.Face.EULER_Y) + ","
                            + getFace.pose(FaceDetector.Face.EULER_Z) + ")"
                            + "Eyes Midpoint: (" + eyesMidPts[i].x + ","
                            + eyesMidPts[i].y + ")");
                }
            } catch (Exception e) {
                if (DEBUG)
                    Log.e("Face", i + " is null");
            }




        }

1 Ответ

3 голосов
/ 03 апреля 2012

Краткий поиск в Google показывает около 10 различных сообщений - некоторые даже в StackOverflow - людей с такой же проблемой. Вы нашли это? Похоже, это может быть ошибка. Я предлагаю вам сообщить об этом на трекер ошибок Android .

Редактировать: Вы должны определенно сообщить об ошибке. Взгляните на исходный код распознавания лиц: этот исходный файл показывает, что Android никогда не установит для них ничего, кроме 0.

Пока это не изменится, существуют другие варианты резюме для Android. Проверьте OpenCV для Android , который теперь официально поддерживается командой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...