[Android] Android で顔認識ができる FaceDetector クラス

| トラックバック(1) |

Android SDK には、顔認識用の API が標準で含まれています。

※android.media パッケージ - FaceDetector クラス

 

使い方

  1. 顔認識させたい画像の幅、高さ、認識させたい最大数を引数として FaceDetector クラスをインスタンス化する。
  2. 顔認識させたい画像のビットマップ(16bit形式)と結果を受け取る Face 配列を引数として findFaces() メソッドを呼び出す。
  3. findFaces() メソッドの戻り値に、認識した顔の数が返されるので、1以上であれば、Face 配列を参照する。 

 

以下、簡単なサンプルコードです。

Bitmap orgBitmap = // ここに認識させたいBitmapがあるとする
FaceDetector.Face[] faces = new FaceDetector.Face[3]; // 結果受け取り用
FaceDetector detector = new FaceDetector(
    orgBitmap.getWidth(), // ビットマップの幅
    orgBitmap.getHeight(), // ビットマップの高さ
    faces.length); // ここでは、最大3つの顔認識結果を受け取れるように指定
int numFaces = detector.findFaces(orgBitmap, faces); // 顔認識実行
if (numFaces > 0) {
    // ここでは、結果をわかりやすくするために、元のビットマップを複製し、
    // 赤い四角を描画しています
    Bitmap newBitmap = orgBitmap.copy(Bitmap.Config.RGB_565, true);
    Paint paint = new Paint();
    paint.setColor(Color.argb(255, 255, 0, 0)); // 赤
    paint.setStyle(Style.STROKE); // 塗りつぶしなしの線
    Canvas canvas = new Canvas(newBitmap);
    for (int i = 0; i < numFaces; i++) { // 認識した数だけ処理
        Face face = faces[i];
        PointF midPoint = new PointF(0, 0);
        face.getMidPoint(midPoint); // 顔認識結果を取得
        float eyesDistance = face.eyesDistance(); // 顔認識結果を取得
        RectF rect = new RectF(); // 正方形
        rect.left = midPoint.x - eyesDistance / 2;
        rect.top = midPoint.y - eyesDistance / 2;
        rect.right = midPoint.x + eyesDistance / 2;
        rect.bottom = midPoint.y + eyesDistance / 2;
        canvas.drawRect(rect, paint); // 正方形を描画
    }
}

関連記事

トラックバック(1)

トラックバックURL: http://mt.adakoda.com/mt-tb.cgi/274

アプリケーションの動作 標準カメラアプリをインテント起動 ↓ bitmapを取得 ↓ 顔認識 ↓ 笑い男のイメージを上書き ネタ元はこちら 工学ナビ -... 続きを読む

2016年8月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31