東京地方は昨日の雷雨以来、湿気と熱気がこもったような気候になってしまい、とても外にでる気にならない。しょうがないので、しばらく前に思いついた機能をAIR A01用アプリのcapture1に仕込むことにした。
capture1というアプリは、AIR A01用のアプリを作るための開発キットとして用意されている “CAMERA KIT FOR DEVELOPERS”(https://opc.olympus-imaging.com/tools/sdk/)に付属の撮影アプリサンプルである “ImageCaptureSample”にいろいろと機能を追加しつつあるもので、今までのところ前に紹介した 絞りオートブラケットやEVオートブラケットといった機能が実用的に使えている。なお、今のところビルドしたAPK(実行パッケージ)の公開は予定していない。
今回追加した機能を一言で書くと、「一定の間隔時間ごとに人物の顔を検出し、その顔にAFロックして撮影する」というもの。この機能をメモリカードが一杯になるか、AIR A01の電池があがるか、アプリを閉じるかするまで繰り返す。例えばパーティー会場の受付なんかに置いておくと、顔を検出し次第、勝手にどんどん写してくれます。
※ 追記
久しぶりにiPad2を使ってサイトを見てみたら、動画が再生されない。過去に遡ってみると、再生されるものとされないものがある。どうやら、E-M5IIの FHD 60pで撮影したものを、Copyright等の追加後に60fpsで出力した動画に限られるようだった。編集過程等の検証はしていないが、60pで撮影したものでも30fpsで出力すれば再生されるようなので、この投稿に限り動画ファイルを入れ替えiPad2でも再生されることを確認した。さて、犯人は誰でしょうか。
capture1を動かすスマホ(nexus5)の画面をE-M5IIでビデオ撮影した。PCの画面(1920×1080)にスライドショーで表示されているモデルさんの写真をcapture1が顔認識し、撮影している様子を示している。AIR A01には、電動ズームのMZD14-42EZを着けている。
スマホ画面上部の ISO表示の右側に、capture1に追加した機能メニューがあり、顔検出と連続自動撮影中はFAC3 または次の顔検出~撮影までの待ち時間を表示する。顔を検出するとその輪郭をピンク色の枠で囲んで明示する。
顔検出自体は、AIR A01がもつ機能に依存できるので特別なロジックは必要ない。カメラの状態に変化があったときに検出位置が通知されるから、画面に枠を書くだけである。複数の検出枠がある場合には水平方向で中央に近いものを選択し、改めてAFロック(白枠から緑枠の表示)して撮影するようにしている。カメラが撮影動作を行うと、スマホの上に見えているAIR A01の緑色のLEDが点滅する。
AIR A01の顔検出機能は、ネコやぬいぐるみの顔を検出しないのである。当初はぬいぐるみでも並べて実験しようかと思っていたのだが、だいたいの場合人間以外は検出してくれないようである。ただ、OM-Dでも壁の上に顔があるよ、とか言ってくれたりして気持ち悪かったことがあるので、ふだんは顔認識はオフにしている。実は動物や昆虫も検出するのかも。
こちらの動画は、撮影の段階でAF~AFロックに失敗した場合(赤枠表示)を示している。被写体は平面の液晶なのでなんで失敗するのか理由は分からないのだけど、たまにAF Failedが返ってくる。
AFロックに失敗した場合も自動撮影は中止せず、次の待ち時間の後に顔の検出が再開するようにしている。ある程度動く対象を撮影しようとするのだから、AFが合わないこともあるだろう。
すぐに追加できそうな機能としては、複数の検出枠の中から面積が大きいものを優先するオプションの追加や、ある程度以上面積が大きければワイド側に電動ズームを駆動するとか(その逆とか)などがある。複数の検出枠があるときにパッパッパッとすべて撮ってしまうのは、理屈としては簡単なのだが、1枚撮るのにかかる時間を考えると現実的ではない。高速なメモリカードに変えたりRAW保存を止めたりすれば撮影中(BUSY)時間の短縮化が図れるのかもしれないが。
できればA01と一緒に制御できる小型電動雲台(パンとチルト)も欲しいところである。何せスマホのwifiを独占されてしまうのだから、一緒に制御できないと価値がない。
今回は人間の顔の検出と撮影が主眼なので、迂闊な題材が使えない。このため、モデルさんの肖像権利用が許諾済のフリー写真素材を提供している、ぱくたそ (https://www.pakutaso.com/)さんから数枚の画像をダウンロードし、Windows フォトビューワーでもってPCにスライドショー方式で表示させているところを撮影させた。例えば普通のテレビ画面や、ブラウザ上の画像検索結果などが相手でも、複数の人間の顔をちゃんと検出してれるのだが、迂闊には使えないのである。