写真を撮るとき, 被写体の一瞬の表情を見逃さずに撮影するのは難しいものである.
そこで, HVC-Cを使ってシャッターチャンスを逃さないカメラアプリを作成してみた.

特長は, 普通の表情では撮影できない仕組みとなっており, シャッターを切るには喜怒哀楽のある表情をする必要があること.

1. システム構成
システム構成は以下のようになっている.

camera01

2. コード
表情推定機能を使い, 喜び, 驚き, 怒り, 悲しみの表情でスコアが閾値以上のときにカメラのシャッターを切るようにする.

2.1 src/MainActivity.java
SimpleDemoをベースとしていて, 認識結果の関連部分は以下の通り.
    @Override
    public void onPostExecute(int nRet, byte outStatus) {
     : (省略)
        if ( (hvcRes.executedFunc & HVC.HVC_ACTIV_EXPRESSION_ESTIMATION) != 0 ) {
            str += String.format("  [Expression Estimation] : expression = %s, score = %d, degree = %d\n", 
                faceResult.exp.expression == HVC.HVC_EX_NEUTRAL ? "Neutral" :
                faceResult.exp.expression == HVC.HVC_EX_HAPPINESS ? "Happiness" :
                faceResult.exp.expression == HVC.HVC_EX_SURPRISE ? "Supprise" :
                faceResult.exp.expression == HVC.HVC_EX_ANGER ? "Anger" :
                faceResult.exp.expression == HVC.HVC_EX_SADNESS ? "Sadness" : "" ,
                faceResult.exp.score, faceResult.exp.degree);
            if (faceResult.exp.expression == HVC.HVC_EX_ANGER ||
                faceResult.exp.expression == HVC.HVC_EX_HAPPINESS ||
                faceResult.exp.expression == HVC.HVC_EX_SURPRISE ||
                faceResult.exp.expression == HVC.HVC_EX_SADNESS) {
                if (faceResult.exp.score > SCORE_THRESHOLD) {  // score > 80 
                   mView.takePicture();
                }      
            }
        }

2.2 カメラ処理[1]
Androidプログラマへの道 ~Moonlight 明日香~」のカメラの部分を参照.

3. 動作例


撮影した写真
camera02

顔の表情に応じて, 写真をデコレーション(例:「怒り」なら頭の位置に鬼の角の画像を貼り付ける)する機能を実装したかったが, 明日(12/15)が締切なのでいったんこれで Sensing Egg Project 事務局に連絡しよう~と.

デコレーション機能やGUIをちゃんと実装したら, またこちらで紹介します.

----
参照URL:
[1] Androidプログラマへの道 ~Moonlight 明日香~