2016-06-14 8 views
0

私はアプリのアイデアに従って動作するかどうかを確認するために、api face tracker sampleとi modified codeのいずれかを使用しています。私は顔を検出した後に顔のマスクを追加したいと思っています。Google Vision APIグラフィックオーバーレイ付きの画像をキャプチャする

私は今まで何をしていましたか、サンプルマスク描画可能なものを追加しました。顔を描く代わりに顔を検出すると、顔追跡矩形にdrawableを描画します。顔のプレビューでそのマスクを表示していますが、その画像をキャプチャしようとすると、グラフィックオーバーレイではなくカメラからフレームをキャプチャするだけです。マスクを追加しました。そのマスクをカメラで撮る方法はありますか?

Image being saved

image being displayed on mobile screen

+0

私も同じことをしようとしています。あなたがそれを達成したら教えてください。 – SANAT

答えて

0

私は私が過去に働いていたプロジェクトで、これに似た何かを達成していないが、もはやプロジェクトへのアクセス権を持っています。

キャプチャメソッドを呼び出すときは、顔の位置への参照を保存する必要があります。

は写真を撮ると、保存する前にファイルが返されたビットマップの上にマスクのリソースを追加します。あなたはどちらかのように、ビジョンAPIはカメラの上にあなたを与えるどのくらいの制御

イムわかりません。

または

保存したファイルをロードし、その上にマスクのリソースを追加します。

私は後でいくつかのコードが役立つ場合はそれを見て回ります。

編集回しビットマップ

bitmap = android.provider.MediaStore.Images.Media 
       .getBitmap(cr, selectedImage); 
ExifInterface exif = new ExifInterface("/storage/emulated/0/Pic.jpg");  
String exifOrientation = exif.getAttribute(ExifInterface.TAG_ORIENTATION); 
int i = Integer.parseInt(exifOrientation); 
bitmap = rotateImage(bitmap, i); 

//

private Bitmap rotateImage(Bitmap bm, int i) { 
    Matrix matrix = new Matrix(); 
    switch (i) { 
     case ExifInterface.ORIENTATION_NORMAL: 
      return bm; 
     case ExifInterface.ORIENTATION_FLIP_HORIZONTAL: 
      matrix.setScale(-1, 1); 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_180: 
      matrix.setRotate(180); 
      break; 
     case ExifInterface.ORIENTATION_FLIP_VERTICAL: 
      matrix.setRotate(180); 
      matrix.postScale(-1, 1); 
      break; 
     case ExifInterface.ORIENTATION_TRANSPOSE: 
      matrix.setRotate(90); 
      matrix.postScale(-1, 1); 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_90: 
      matrix.setRotate(90); 
      break; 
     case ExifInterface.ORIENTATION_TRANSVERSE: 
      matrix.setRotate(-90); 
      matrix.postScale(-1, 1); 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_270: 
      matrix.setRotate(-90); 
      break; 
     default: 
      return bm; 
    } 
    try { 
     Bitmap bmRotated = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true); 
     bm.recycle(); 
     return bmRotated; 
    } catch (OutOfMemoryError e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 
+0

ありがとうございました。私はすでに同様のことをしました。そうしている間に多くの問題がありました。いくつかのデバイスのカメラは、私がキャプチャしたときに回転または反転画像を与える。 –

+0

@UsmanGhauri私は同じ問題を再現しました。画像の回転。テストしたすべてのデバイスでこれを解決するコードを追加しました。 – Lonergan6275

+0

私はあなたのコードを試しましたが、それは表面のように黒いイメージを与えています。これには他の解決策がありますか? – vijaypalod

関連する問題