2017-05-01 18 views
0

私はモバイルビジョンAPIを使用してAndroidアプリで顔を検出しています。モバイルビジョンAPIが顔を検出するのに時間がかかりすぎる

フェースへの参照を格納するためにSparseArray of Faceを使用しましたが、detect.detect(frame)メソッドが顔を検出するには長すぎます(15秒)。

注:cameraで撮影した画像のビットマップをdetectFacesメソッドに渡しています。

私のコードは

void detectFaces(Context context, Bitmap picture){ 
    com.google.android.gms.vision.face.FaceDetector detector = new com.google.android.gms.vision.face.FaceDetector.Builder(context) 
      .setTrackingEnabled(false) 
      .setClassificationType(com.google.android.gms.vision.face.FaceDetector.ALL_CLASSIFICATIONS) 
      .build(); 

    //Build the frame 
    Frame frame = new Frame.Builder().setBitmap(picture).build(); 

    //Detect the faces 
    SparseArray<Face> faces = detector.detect(frame);//**This takes approx 15 second** 
    if(faces.size() == 0) 
     Toast.makeText(context, "No Face Detected", Toast.LENGTH_SHORT).show(); 
    else 
    { 
     Toast.makeText(context,"Face detected are : " + faces.size() , Toast.LENGTH_LONG).show(); 
     getClassification(faces.valueAt(0)); 
    } 

    //Release the detector 
    detector.release(); 
} 

答えて

0

を下回っている私は現在、このサンプルアプリを経由していると私はアプリは顔が検出されないことを返す続けて同じ問題に出くわしました。

ドキュメントを読むと、hereが見つかりました。detector.isOperational()を使用して、検出が機能するために必要なファイルがダウンロードされているかどうかをテストする必要があります。私は、ファイルは次のようにダウンロードされていることを助言するために、このメソッドを使用:

public static void detectFaces(Context context, Bitmap image){ 
     // Create the face detector, disable tracking and enable classifications 

     FaceDetector detector = new FaceDetector.Builder(context) 
       .setTrackingEnabled(false) 
       .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS) 
       .build(); 

     if(detector.isOperational()){ 
      // Build the frame 
      Frame frame = new Frame.Builder().setBitmap(image).build(); 
      ... 
     }else{ 
      Toast.makeText(context, R.string.not_operational, Toast.LENGTH_LONG).show(); 
     } 


    } 

次の私は、検出器が動作しなかったことに気づきました。さらに研究を重ねた結果、私のデバイスに必要な追加ファイルを保存するのに十分な記憶領域がないという問題が見つかりました。私は最初の試行で 'Not Operational'というエラーを出した別のデバイスに切り替えました。それ以来、これまでも動作しています。

また、スペースを解放してアプリを外部ストレージに移動すると、最初のデバイスで動作することができました。

関連する問題