顔筋アラーム
こんにちは.ゆずこです. 前回ちょっと話したアプリがリリースされたので紹介 (宣伝) します.
iOS 8 からのみ対応です.7以下はアラート出すところで落ちる気がします,UIAlertView
使ってないので.
これは去年の Yahoo! Open Hack U で最優秀賞をいただいたものを少しだけ修正した (Swift 1.2 で書きなおした) ものです.「二度寝しないアラーム」を作ろうということで,アラーム音を止めるために顔筋体操をするようにしました.おじさんから「笑え」「右ウインク」「左ウインク」と3種類からランダムに命令され,それに従うとカウントが減っていってカウントが0になるとやっとアラームが止まるようになっています.ぜひダウンロードして使ってみてください.
さて,技術的なお話を少しだけ.ざっくり言うと,今回は iOS に入っている CIDetector
と CIFaceFeature
を使って顔認識,表情認識を行い,おじさんの命令通りの表情と認識されたら SpriteKit
で画像を変更しています.
今回のアプリをざっくりさせたものがこちらです.
飯テロされるので頑張ってインカメラに向かって笑顔を作ってください.笑顔と認識されると 某アニメ の3人がランダムに出てきます.それだけです.(この画像,公式から取ってきたはずなんだけど見つからない…というかこれいいのかな…いいのかな…)
*追記: 画像のディレクトリ消しました.そのままだと動かないので ここ から画像を全部落としてください.よろしくお願いします.
SmileDetector では認識する FaceFeature として笑顔 (CIDetectorSmile
) のみ入れていますが,他にも こんな ものを検出できます.顔筋アラームでは CIDetectorSmile
の他に CIDetectorEyeBlink
を入れています.あと,「顔がカメラに認識されているか」の判定として CIFaceFeature
の .hasMouthPosition
を使って「口が入っていたら認識した」とみなしています.なのでなかなか画像が変わらないときは顔とカメラの距離を少し離してみてください.顔筋アラームも同じ仕様になっています.おじさんから「顔が見えん」と怒られたらだいたいこれか,部屋が暗いです.
Swift 1.2 で書いていますが,私はプログラミング弱者で本当に綺麗に書けなくて本当に困っているので,レビューお待ちしております.プログラミングメッチャムズカシイ.