GROUPエンジニアブログです。GROUPのエンジニア、ガイアです。今は、ECナビのスマホサイトの開発運用をしています。僕はECナビのスマホサイトを8ヶ月利用して5万ポイント貯めました。貯めたポイントをWebマネーに変えて、音楽でも買おうと思います。ステマはこのぐらいにして本題に入ります。きて、今はインタラクションのあるコンテンツもごく当たり前に配信されてます。醸し出していますが、Flashで作られたコンテンツが多いのが現状です。Apple信者としてはiPhoneやiPadに対応したコンテンツにしたいところ、Flashを使ったコンテンツは少しばかり抵抗があります。Apple曰く「アプリでやればいいじゃない」というツンデレっぷりです。そんな事を考えている時、Webで顔認識をやりたいという願いが降り落ちて来ました。最善はFlashだろうと思ったのですが、このご時世iPhoneは外せない。いう訳で他の方法を模索するに至りました。顔認識についてはOpenCVというオープンソースのコンピュータビジョン用のライブラリを利用するのが一番楽だと信じているので、それをWebのインターフェイスから利用しようと妄想を走らせ、Google先生にお伺いを立ててみると、PHPからOpenCVを使う方法があるみたいです。great!PHPのExtensionにface_detectという拡張機能があり、それを使います。さあ、前置きはこのぐらいにして実際の作業に入りましょう。詳しくはXarg.orgに情報があります。OSはなんでもいいでしょう。extensionphp-gdあたりまでは楽に揃えられると思います。パッケージ管理ツールで揃えてしまいましょう。有効になっていることを確認します。次に、PHPで画像を表示させてみましょう。phpanualからPHPの画像表示のコードを拝借します。作成するOpenCVのインストール画像は表示されましたか?では、次にOpenCVをインストールします。OpenCVは2.3が推奨です。OpenCVはリポジトリに無いことが多いので、ここを参考にさせて頂きました。ソースからインストールhttp://www.mk-mode.com/octopress/2011/12/08/08002006/ソースからOpenCVをインストールするときにcmakeを利用するのですが、リポジトリからcmakeをインストールすると2.6系が入り、このページの通りに進めていくとエラーが出てしまいます。ソースパッケージからcmakeの2.8系をインストールすれば解決します。その他、gc++が必要だったりしますが、エラーが出たら、適宜インストールして下さい。extensionをインストールします。Xarg.orgにインストール方法が書いてあります。php.iniコマンドだとこんな感じです。(権限で怒られたら、適宜権限を追加するなり、コマンドを一つづつ実行するなりして下さい。追記して、facedetectを有効化します。ページでfacedetectが有効化されていることを確認します。これで準備は万端です。extensionをインストールすると2つの関数が使えるようになります。顔の場所の配列を返す第一引数は、画像ファイル、第2引数はOpenCVでオブジェクト検出に利用される分類器です。この分類器に関してはOpenCVに学習済みのサンプルがあります。以下にあるxmlがそのデータです。顔認識!!さあ、環境設定も終わり、あとはコードを書くだけです、先ほどの画像表示のコードを変更します。見る出力結果になりましたね。PHPで顔認識をすることができました。みなさんも、PHPで顔認識を楽しんで下さい。「いやいやいや、ちょっとまって、なんだよ、PHPで顔認識って、その処理、全部サーバでやる気かよ、そこはFlashだろjk」っておみさんに言われそうな仕様です。今回VirtualBoxを使っていたのですが、実行速度も・・・これでは、ユーザの同時アクセスに耐えれそうにありません・・・PHPで顔認識ってニーズあるんですかね。「まだだ、まだ終わらんよ」こうなったら更にニッチなところへと足を踏み入れていく次第です。