2015-12-06 8 views
0

https://developers.google.com/android/reference/com/google/android/gms/vision/face/FaceDetector.BuilderFace не обнаружено с помощью видения Google службы

Я использую вышеуказанную службу Google в моем приложении для обнаружения лица. Я убедился, что у моего телефона минимальная версия сервиса для игры в google, которая на моем телефоне составляет 8,3, но все же я не могу заставить распознавание лица работать! Я импортировал библиотеку импорта библиотеки в Google Play в моем затмении проекте .... Вот код:

  @Override 
     protected void onPreExecute() 
     { 
      detector = new FaceDetector.Builder(MainContext) 
      .setTrackingEnabled(false) 
      //.setProminentFaceOnly(true) 
      .setLandmarkType(FaceDetector.ALL_LANDMARKS) //required 
      .build(); 
     } 

private void detectTheFace(Bitmap converted) 
      { 

       Frame frame = new Frame.Builder().setBitmap(converted).build(); 
       faces = detector.detect(frame); 
      } 

Я не знаю, если это необходимо для преобразования растрового изображения используется для обнаружения лица должно быть RGB_565, но я сделал это в любом случае. Я попытался с изменением конфигурации RGB и без него, и это дает те же результаты. В принципе, разреженный массив лиц имеет размер 0, то есть он не обнаруживает лицо ... когда-либо. Btw просто для того, чтобы дать некоторый контекст для вышеуказанного кода, я выполняю обнаружение лица в async-задаче, потому что я хочу запустить его на фоне.

+0

Я предлагаю проверить готовность детекторских зависимостей и условия хранения. См. Проверки в примере кода здесь: https://github.com/googlesamples/android-vision/blob/master/visionSamples/photo-demo/app/src/main/java/com/google/android/gms/samples /vision/face/photo/PhotoViewerActivity.java#L75 – pm0733464

+0

Нет, это не проблема, но спасибо за предложение. Я проверил его и загрузил собственные библиотеки, и он все еще обнаруживает обнаруженные нулевые грани. –

+0

Есть ли ошибки в журналах? Вы можете проверить обсуждение скорости и точности здесь: http://stackoverflow.com/questions/34132444/google-mobile-vision-poor-facedetector-performance-without-camerasource/34160783#34160783 – pm0733464

ответ

0

У меня такая же проблема, т. Е. он отлично работал на связи, но не в галактике. Я решил проблему, повернув растровое изображение на 90 градусов, в случае, если метод detect.detect() дает грани нулевого размера. поэтому максимальное повторение происходит 3 раза после вызова метода detect.detect(), поскольку 4-й поворот дает вам одно и то же растровое изображение.

Bitmap rotateBitmap(Bitmap bitmapToRotate) { 

     Matrix matrix = new Matrix(); 

     matrix.postRotate(90); 

     Bitmap rotatedBitmap = Bitmap.createBitmap(bitmapToRotate, 0, 0, 
       bitmapToRotate.getWidth(), bitmapToRotate.getHeight(), matrix, 
       true); 
     return rotatedBitmap; 

    } 

проверить, не возвращено ли лицо детектором. Detect() имеет нулевой размер, тогда под кодом должен работать.

if(!faces.size()>0){ 
if (rotationCounter < 3) { 
        rotationCounter++; 
        bitmap= rotateBitmap(bitmapToRotate); 
//again call detector.detect() here 
            } 

} 

вы можете проверить необходимость вращения растрового изображения без написания над кодом. Из оригинального кода попытайтесь захватить изображение в альбомном режиме телефона или просто поверните изображение на 90 градусов и захватите его.

-1

Для решения этой проблемы используйте спецификацию ориентации из EXIF ​​фотографии.