1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Android の MobileVision API を使って 顔検出する

Last updated at Posted at 2019-05-19

Mobile Vision API

Android の画像認識の API です。
Google Play Service で提供される。

Mobile Vision

Google Play Services

下記の公式サンプルコードや解説記事が公開されている

Android Vision API Samples

Detect Facial Features in Photos

Face APIで顔検出を試してみる

Mobile Vision API の設定

app/build.gradle
dependencies {

    // 追加する
    compile 'com.google.android.gms:play-services-vision:10.2.0'

}
AndroidManifest.xml
<manifest 

    <!-- 追加する -->
    android:installLocation="auto" 

    package="xxx">

    <application
        android:theme="@style/AppTheme">

    <!-- 追加する -->
        <meta-data android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version"/>

    <!-- 追加する -->
        <meta-data
            android:name="com.google.android.gms.vision.DEPENDENCIES"
            android:value="face" />

        <activity android:name=".MainActivity">

画像ファイルから顔検出する

初期の API にバグがあったようです。

公式サンプルコードでは、FaceDetector の代わりに、
SafeFaceDetector.java が提供されている。

reference: FaceDetector

// FaceDetector を生成する
    FaceDetector detector = new FaceDetector.Builder(context)
        .setTrackingEnabled(false)
         .setLandmarkType(FaceDetector.ALL_LANDMARKS)
         .build();

// 画像ファイルを bitmap 形式で読み込む
    InputStream stream = getResources().openRawResource(R.raw.face);
    Bitmap bitmap = BitmapFactory.decodeStream(stream);

// Frame を生成する
    Frame frame = new Frame.Builder().setBitmap(bitmap).build();

// 顔検出する
    SparseArray<Face> faces = safeDetector.detect(frame);

// ランドマークを取得する
    Face face = faces[0];
    List<Landmark>	landmarks = face.getLandmarks();

検出した顔の上にランドマークを表示する

公式サンプルコードでは、FaceView.java が提供されている。

下記のような処理を行う。

View#onDraw にて、顔のbitmapを描画する。
その上に、緑の円 (Circle) を描画する。

その際に、canvas の大きさに合うように、canvas と Bitmap の大きさの比率を求め、円の位置を調整する。

スクリーンショット

vision1.png

サンプルコードをgithub に公開した。
https://github.com/ohwada/Android_Samples/tree/master/Vision1

関連記事

1
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?