写真を撮るとき, 被写体の一瞬の表情を見逃さずに撮影するのは難しいものである.
そこで, HVC-Cを使ってシャッターチャンスを逃さないカメラアプリを作成してみた.
特長は, 普通の表情では撮影できない仕組みとなっており, シャッターを切るには喜怒哀楽のある表情をする必要があること.
1. システム構成
システム構成は以下のようになっている.
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. 動作例
撮影した写真
顔の表情に応じて, 写真をデコレーション(例:「怒り」なら頭の位置に鬼の角の画像を貼り付ける)する機能を実装したかったが, 明日(12/15)が締切なのでいったんこれで Sensing Egg Project 事務局に連絡しよう~と.
デコレーション機能やGUIをちゃんと実装したら, またこちらで紹介します.
----
参照URL:
[1] Androidプログラマへの道 ~Moonlight 明日香~
そこで, HVC-Cを使ってシャッターチャンスを逃さないカメラアプリを作成してみた.
特長は, 普通の表情では撮影できない仕組みとなっており, シャッターを切るには喜怒哀楽のある表情をする必要があること.
1. システム構成
システム構成は以下のようになっている.
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. 動作例
撮影した写真
顔の表情に応じて, 写真をデコレーション(例:「怒り」なら頭の位置に鬼の角の画像を貼り付ける)する機能を実装したかったが, 明日(12/15)が締切なのでいったんこれで Sensing Egg Project 事務局に連絡しよう~と.
デコレーション機能やGUIをちゃんと実装したら, またこちらで紹介します.
----
参照URL:
[1] Androidプログラマへの道 ~Moonlight 明日香~