デバイスに保存されている画像から顔を検出する必要がある場合は、Android のソース コードをハッキングすることなく、これを行うことができます。
API 1 以降FaceDetector
のパッケージで利用可能な API があり、入力 ( 565 形式でフォーマット) として受け入れ、その画像内の顔の位置を提供します。android.media
Bitmap
必要な手順は次のとおりです。
1-をロードしBitmap
て変換します(ドローアブルリソースの下にファイルがあると565 format
仮定します)facesPicture
Bitmap originalBitmap =
BitmapFactory.decodeResource(getResources(),R.drawable.facesPicture);
Bitmap bitmap = originalBitmap .copy(Bitmap.Config.RGB_565, true);
originalBitmap .recycle(); // allow the GC to collect this object
2-Face
検出された顔情報を保持する配列を定義し、FaceDetector
int MAX_FACES = 20; // assuming that the image will have maximum 20 faces
FaceDetector.Face[] faces = new FaceDetector.Face[MAX_FACES];
FaceDetector faceDetector =
new FaceDetector(bitmap.getWidth(), bitmap.getHeight(), MAX_FACES);
3- 顔を検索して結果を処理する
int facesCount = faceDetector.findFaces(bitmap, faces);
for(int i=0; i<facesCount; i++) {
FaceDetector.Face face = faces[i];
float detectionConfidence = face.confidence(); // over 0.3 is OK
PointF eyesMidPoint = new PointF();
face.getMidPoint(eyesMidPoint);
float eyesDistance = face.eyesDistance();
float rotationX = face.pose(FaceDetector.Face.EULER_X);
float rotationY = face.pose(FaceDetector.Face.EULER_Y);
float rotationZ = face.pose(FaceDetector.Face.EULER_Z);
// Do something with these values
}
この記事Android API を使用した顔検出で説明されている完全なプロジェクトの例をここからダウンロードできます。
より高度なものが必要な場合は、OpenCV の使用を検討する必要があります