2017-05-24 14 views
0

Googleの顔検出APIを使用してアプリケーションを開発しています。サンプルプロジェクトを使用しました。必要なのはオーバーレイ画像(マスク)顔が右または左に回転した場合、座標値を取ってオーバーレイされた画像を更新したいと思います。これを行うにはどうすればいいですか?誰でも助けてもらえますか。事前に感謝します。私が検出されたface.IのオイラーZ値を取ることによって、この問題を解決したライブプレビュー、顔検出アンドロイドで顔の向きの変化を検出する方法

答えて

0

は私のコードを掲載しています:

とき向きの変更Iが検出された顔の上に四角形とマスクビットマップを回転させています。

RectF dest = new RectF((int) left, (int) top, (int) right, (int) bottom); 

     Matrix m = new Matrix(); 

     m.setRotate(face.getEulerZ(),dest.centerX(),dest.centerY()); 
     m.mapRect(dest); 

回転ビットマップ。

public Bitmap rotate_bitmap(Bitmap bmp,float degree){ 
    Matrix matrix = new Matrix(); 

    matrix.postRotate(degree); 

    return Bitmap.createBitmap(bmp , 0, 0, bmp .getWidth(), bmp .getHeight(), matrix, true); 
} 

キャンバスに描画されたマスクを描く。

  canvas.drawBitmap(rotate_bitmap(faceTrackerActivity.getBitmapItem("face"),face.getEulerZ()), null, dest, null); 

また、顔検出器にFAST MODEを設定します。

FaceDetector detector = new FaceDetector.Builder(context) 
      .setClassificationType(FaceDetector.ALL_CLASSIFICATIONS) 


      .setMode(FaceDetector.FAST_MODE) 
      .build();`