2017-01-01 1 views
0

ACTION_IMAGE_CAPTUREインテントを使用して撮影した画像の顔を取得しようとしています。しかし何らかの理由でFaceDetectorは決してイメージを見つけません。これは私がやっているすべては、任意の顔が検出されたかどうかを確認するためにnumFaces変数をチェックしている私のコードこの時点でFaceDetectorはインテントで撮影された顔を認識しませんACTION_IMAGE_CAPTURE

BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inPreferredConfig = Bitmap.Config.RGB_565; 
    options.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(filePath, options); 

    options.inSampleSize = calculateInSampleSize(options,desiredWidth,desiredHeight); 

    options.inJustDecodeBounds = false; 
    Bitmap bitmap = BitmapFactory.decodeFile(filePath,options); 



    ExifInterface exif = new ExifInterface(filePath); 
    int orientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_UNDEFINED); 
    Matrix matrix = new Matrix(); 
    boolean recycle = true; 
    switch (orientation) { 
     case ExifInterface.ORIENTATION_ROTATE_90: 
      matrix.postRotate(90); 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_180: 
      matrix.postRotate(180); 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_270: 
      matrix.postRotate(270); 
      break; 
     default: 
      recycle = false; 
      break; 
    } 
    Bitmap finalBM = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); 
    if(recycle) 
     bitmap.recycle(); 

    FaceDetector.Face[] faces = new FaceDetector.Face[1]; 
    FaceDetector faceDetector = new FaceDetector(bitmap.getWidth(), bitmap.getHeight(),1); 
    int numFaces = faceDetector.findFaces(bitmap,faces); 

    return finalBM; 

です。しかし、写真がちょうど私自身の顔だと思ったとしても、毎回0回です。また、必要に応じて画像を回転しています。回転前に顔を検出しようとしましたが、動きませんでした。

+0

顔をすばやく簡単に検出したい場合は、https://github.com/blundell/WoodyFaceDetectionを使用してください(またはこれを見て、どのように顔検出を行うかを理解してください) – Blundell

+0

あなたのコードを見て誰でもあなたを助けることができる唯一の方法は、前と同じ方法で同じAPIを使用した場合です。ヘルプが必要な場合は、上記のコードが何であるかを説明し、必要な文書や説明にリンクすることで、誰が助けることができるのかを広げてください。 * then *あなたは助けや答えを得る可能性が高いです – Blundell

答えて

0

私はこのコードで問題を見つけることができました。 RGB_565を使用してビットマップをデコードする必要があり、画像がどのような向きであっても、顔が上向きでなければならないという2つの要件があります。このコードの問題点は、正しいフォーマットでデコードしていたが、顔が横になっていたことである。画像が回転されると、RGB_565ではなく作成されました。 Bitmap.copyで簡単に行えるRGB_565に回転イメージを変換する必要がありました。

FaceDetectorコードを実行してください。

関連する問題