2017-10-28 11 views
1
私が検出し com.google.android.gms.vision.face.FaceDetectorクラスを使用して、顔の画像をトリミングしようとしています

を検出します、一貫性のない画像寸法はfacedetectorオブジェクトは次のように作成され</p> <p>方法

detector = new FaceDetector.Builder(context) 
      .setClassificationType(FaceDetector.FAST_MODE) 
      .setProminentFaceOnly(true) 
      .setTrackingEnabled(true) 
      .build(); 


detector.setProcessor(
      new MultiProcessor.Builder<>(new GraphicFaceTrackerFactory()) 
        .build()); 

カメラソースが

mCameraSource = new CameraSource.Builder(context, detector) 
       .setFacing(CameraSource.CAMERA_FACING_FRONT) 
       .setRequestedFps(15.0f) 
       .build(); 

、カメラ2としてAPIで作成され、ボタン上CameraSouにtakePicture方法をクリックRCE

mCameraSource.takePicture(null, new CameraSource.PictureCallback(){ 

      @Override 
      public void onPictureTaken(byte[] bytes) { 
       BitmapFactory.Options options = new BitmapFactory.Options(); 
       Bitmap temp = BitmapFactory.decodeByteArray(bytes, 0, 
         bytes.length, options); 
       Frame frame = new Frame.Builder().setBitmap(temp).build(); 
       SparseArray<Face> faces =detector.detect(frame); 
       System.out.println("faces: "+faces.size()); 

      } 
     }); 

、として画像を処理するために呼び出されます。しかし、私は次のエラーを取得しています、

inconsistent image dimensions 

Native face detection failed 

java.lang.RuntimeException: Error detecting faces. 

com.google.android.gms.vision.face.NativeFaceDetectorImpl.detectFacesJni(Native Method) 
    at com.google.android.gms.vision.face.FaceDetector.detect(Unknown Source:41) 

答えて

0

は最後に、私はそれがファイルから顔を検出するために、動作するようになった、

ソリューション trackingEnabled - > falseの設定で検出器オブジェクトを作成し、複数の面を追跡する場合はsetProminentFaceOnly-> falseとします。

トラッキングを有効にすると、検出器は関連付けられたカメラプレビューでうまく動作し、IDで顔を追跡できます。検出器オブジェクトを作成するときに、この解決策の背後にある理由の詳細な説明を投稿します。

関連する問題