顔認識で「強いられているんだ!(集中線)」をやってみた(プログラム配布します→出来ませんでした→追記しました)

処理について

顔認識

OpenCVの顔認識のサンプルをそのまま持って来ました。
下記のエントリにある通りに実行すると顔を赤い枠で囲んでくれます。
http://blog.degoo.org/2011/06/processing%E3%81%A8opencv%E3%81%A7%E3%83%92%E3%83%80%E3%82%AB%E3%83%88%E3%82%AA%E3%83%AB/

集中線描画

簡単に描画するならこれ、ということでProcessingを使いました。
アルゴリズムとしては、
1. 画面枠の1辺上の任意の点Aと顔認識で得た顔の中心Fを通る直線上に、任意の割合を掛けた点Cを設定します。
2. ランダムに底辺の長さを設定し、点Bを決めます。
3. 3点A、B、Cを通る三角形を描画します。
4. これを4辺全てに適用し、点Aの間隔を適切に調整して繰り返し描画すれば完成です。
ただし集中線っぽく描画するコツ(?)として、

  • 三角形は交互にアルファ値を100、70、100、・・・とし、メリハリをつける
  • 点滅させることで集中線っぽさを出す

この2点を加えています。

感想

OpenCVを初めて触ったのは5年前の大学2年生のとき。
そのときはドキュメントは英語ばかり、実行環境もC++など限られていたため涙を流していましたが、
今は日本語のドキュメントも豊富でProcessingなど敷居の低い言語でも動作出来るとあって隔世の感ですね。
「ちょっとOpenCVの顔認識で遊んでみよう」という軽い気持ちでサクッと書けるのは素晴らしいです。

プログラム

WindowsMac OS Xで動作するプログラムを下記に置きました。
Windows版:http://www1.axfc.net/uploader/File/so/74014
Mac OS X版:http://www1.axfc.net/uploader/File/so/74015
自分の開発環境(MBAMac OS X Lion)でしか試せていないので動作しなかったらすみません(サポートとかも特にしないです)。

※ちゃんと動かないみたいです。あとでfixします。

zipファイルをDL後に展開し、フォルダ内にあるファイルを実行してください。

です。
動きませんでした(白目)
いろいろとすみません。OpenCVをインストールしないとダメかも?
ソースファイルはsoruceフォルダの中に入っていますので、Processingからビルドしてみてください。

  • Processingは1.5.1を使う。WindowsならCドライブ直下に置く
  • http://ubaa.net/shared/processing/opencv/を見つつOpenCV1.0とOpenCVライブラリをインストール。
  • この段階でOpenCVをProcessingからインポートすることができ、サンプルが実行出来るはずです。
  • OpenCV\data\haarcascades\haarcascade_frontalface_alt.xmlをpdeファイルと同じ場所に置く。

これで上手くいくかもしれないです。http://www.iamas.ac.jp/~hrr/Lecture/Processing09/proc05.pdf(pdf注意)が参考になりました。

【2011/01/17 追記】
下記のエントリに手順をまとめました。おそらくこれでいけると思いますが・・・。

Processing+OpenCVで顔検出を使ったり強いられたりする方法 - むだな ものを つくる

リファクタリングは全くしていない上にProcessing1.5は日本語でコメントが打てないのでロクにコメントもありませんが・・・。
もうちょっとスマートに書く方法があるとは思いますがお許し下さい。