2015-12-06 3 views
0

https://developers.google.com/android/reference/com/google/android/gms/vision/face/FaceDetector.Builderface à non détectée en utilisant la vision service google

J'utilise le service Google ci-dessus dans mon application pour la détection de visage. Je me suis assuré que mon téléphone a la version minimale du service Google Play, qui sur mon téléphone est de 8,3, mais je n'arrive toujours pas à faire fonctionner la détection de visage! J'ai importé la bibliothèque par l'importation de la bibliothèque de jeu de Google dans mon projet Eclipse .... Voici le code:

  @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); 
      } 

Je ne sais pas s'il est nécessaire de convertir le bitmap que vous utilisez pour détecter les visages un doit être Configuration RGB_565 mais je l'ai fait de toute façon. J'ai essayé avec et sans changer la configuration RGB et cela donne les mêmes résultats. Fondamentalement, les visages épars du tableau est de taille 0, ce qui signifie qu'il ne détecte pas un visage .... jamais. Btw juste pour donner un peu de contexte sur le code ci-dessus, j'exécute la détection de visage dans une tâche asynchrone car je veux l'exécuter en arrière-plan.

+0

Je suggère de vérifier si les dépendances du détecteur sont prêtes et pour les conditions de stockage faible. Voir les contrôles dans l'exemple de code ici: 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

Non, ce n'est pas le problème mais merci pour la suggestion. Je l'ai vérifié et les bibliothèques natives sont téléchargées et il montre toujours zéro visages détectés –

+0

Y at-il des erreurs dans les journaux? Vous pouvez consulter la discussion sur la vitesse et la précision ici: http://stackoverflow.com/questions/34132444/google-mobile-vision-poor-facedetector-performance-without-camerasource/34160783#34160783 – pm0733464

Répondre

0

J'ai le même problème, c'est-à-dire. ça fonctionnait bien sur nexus mais pas dans la galaxie. J'ai résolu le problème en tournant le bitmap à 90 degrés dans le cas où la méthode detector.detect() donne des visages de taille nulle. La réessai maximum est donc 3 fois après avoir appelé detector.detect() car la 4ème rotation vous donne le même bitmap.

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; 

    } 

Vérifiez si le retour de face par detector.detect() a une taille nulle alors le code ci-dessous devrait s'exécuter.

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

} 

Vous pouvez vérifier la nécessité de faire pivoter le bitmap sans écrire au-dessus du code. De votre code original, essayez de capturer l'image en mode paysage du téléphone ou simplement faire pivoter l'image à 90 degrés et la capturer.

-1

Pour résoudre ce problème, utilisez la spécification d'orientation de l'EXIF de la photo.