2015-11-03 2 views
0

this simple example Я включил обнаружение лица в мое приложение для фотографий.Распознавание лиц не работает

Я удалил весь материал для рисования фигуры для простоты и просто ищу API для подсчета количества головок на фотографии.

Использование фронтальной камеры Я делаю снимок и последовательно, и в обязательном порядке он не обнаруживает никаких лиц.

Также существует очень подозрительное предупреждение в журналах, которое происходит каждый раз, когда я запускаю код (который, похоже, не имеет ничего общего с тем, что я делаю, но тем не менее появляется каждый раз - предупреждения:

W/ResourcesManager: Asset path '/system/framework/com.android.media.remotedisplay.jar' does not exist or contains no resources. 

W/ResourcesManager: Asset path '/system/framework/com.android.location.provider.jar' does not exist or contains no resources. 

вот мой код

Фото Ответный

PictureCallback jpegCallback = new PictureCallback() { 
    public void onPictureTaken(byte[] data, Camera camera) { 
     try { 

      BitmapFactory.Options options = new BitmapFactory.Options(); 
      options.inPreferQualityOverSpeed = true; 
      options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
      options.inPurgeable = true; 
      options.inInputShareable = true; 
      options.inMutable = true; 
      Bitmap temp = BitmapFactory.decodeByteArray(data, 0, 
        data.length, options); 

      countHeads(temp);    

     } catch (Exception e) { 
      Log.d(TAG, "onPictureTaken callback failed : " + e); 
     } 
    } 
}; 

Руководитель Встречное

private void countHeads(Bitmap b){ 
    Frame frame = new Frame.Builder().setBitmap(b).build(); 

    FaceDetector faceDetector = new FaceDetector.Builder(getApplicationContext()).setTrackingEnabled(false) 
      .build(); 

    if(!faceDetector.isOperational()){ 
     BPCAlertDialog.alert(this, "Can't build face detection"); 
     return; 
    } 
    SparseArray<Face> faces = faceDetector.detect(frame); 
    //this always prints 0 
    Log.d(TAG, "I COUNT " + faces.size() + " FACES IN THIS PHOTO"); 
} 

ответ

1

Оказалось, что проблема заключалась в том, что я брал фотографии боком (держа телефон в портрете) даже при том, что активность для ландшафта вверх установленный. Я еще не сделал тщательной интроспекции того, каковы конкретные ограничения, но казалось бы, что лица должны быть выстроены с ожидаемой ориентацией. Я добавлю к этому ответу, поскольку я выясню больше.

+0

Если вы знаете ориентацию, вы можете установить ее при создании кадра. Детектор лица учитывает это и будет обнаруживать лицо, как если бы оно было в вертикальной фотографии. Подробнее см. Здесь: https://developers.google.com/android/reference/com/google/android/gms/vision/Frame.Builder.html#setRotation(int) – pm0733464

Смежные вопросы