ノンプログラマー・プログラミング・ガイド

ほぼ独学。もはやおっさんになりかかってからプログラミングの勉強開始。HTML、CSS、JavaScript、SQL、PHP、Javaがなんとなく解る。Joomla!とandroidで書いたプログラムを配布中。iPhoneアプリ作りたいからMacくれ(下さい)。

タグ:顔検出



笑顔評価アプリ SmileScore

_r2_c3
OpenCV使って、笑顔を評価するアプリ作りました!無料です!使ってください!笑顔検出して、エッジを検出して、目頭、目尻、口の端の点を検出してるんですが、なかなか大変だった・・・。うまく評価できない場合も多々あります。まぁ、しゃーない。



笑顔認識でシャッターをきるSmilePics

_r2_c3bbbbbbbbbbb
こちらも同じくOpenCVを使って、笑顔認識でシャッターをきるAndroidアプリです。有料(150円)です。(このブログへの応援の意味を込めて、買ってくれる素敵な人がいっぱいいるんじゃないのかとこっそりと思ってます)。




Androidデバイスは、Nexus7しか持ってないので、携帯でテストしてないんですよね・・・・。たぶん、きっと動くはず・・・。

この記事では、OpenCVを使った結果だけをしりてーんだよ。C++とかいらねーんだ。javaだけでいいんだ。って人向けの記事です。OpenCV自体の開発をどうこうしようって人向けではありません。僕は、そんなところを理解すらしてません。


OpenCVは、画像を解析してくるオープンソースのライブラリーです。画像の中から顔を検出してくれたり、口や目を検出してくれたり、素敵ライブラリーみたいです。もともとは、Cで書かれた言語らしいんですけど、他の言語にも対応してくれてるみたいっす。


1. OpenCVのAndroid向けのファイルを入手

OpenCVのAndroid SDKを入手して、インストールしてみてくだせい。この記事を書いている時点での最新版は、2.4.6です。サンプルにもそれを使ってます。


2. 解凍してEclipseでインポート

zipファイルなんで解凍してEclipseにインポートします。「ファイル→インポート→Existing Android Code Into WorkSpace(既存のAndroidコードをワークスペースへ)」を選択します。解凍したフォルダーは、さらにフォルダー別けされているんですが、Eclipseでインポートするときに解凍したフォルダーのルートあたりを参照すれば、.EclipseさんがAndroidのファイルを探してくれて、サンプルとライブラリー全てを見つけ出してくれます。サンプルは、好きな奴だけインポートすればいいんですけど、opencv/sdk/javaにあるライブラリーだけは、必ずインポートするようにしてください。


3. 環境構築完了

終わりです!他のブログなんかには、C++を変換するAndroid NDKがどうとか書かれているんですけど、OpenCVの結果だけを知りたい場合やC++で開発しねーしってな場合は、Android NDKの設定とか必要ありません。



4. サンプルにエラーが表示される

以下の理由が考えられます。

  • ライブラリーが正しく参照されていない。
  • Android NDKの設定が必要

OpenCVのライブラリーが正しく参照されていない
それぞれのサンプルは、OpenCV Library 2.x.xなるライブラリーを参照する必要があります。ライブラリーが正しく参照されているか確認するには、パッケージエクスプローラで対象のサンプルアプリの上で右クリックして、プロパティ→Android→ライブラリーの部分を確認しください。エラーの場合は、バツ印が表示されているはず。追加でOpenCV Libraryを選択すればオッケーなはず。


Android NDKの設定が必要
 srcやresのならびに、jniのフォルダーがあるサンプルアプリの場合は、Android NDKの設定が必要です。C++の変換を行うんですが、C++なんてしらねーし。って事で諦めましょう。




5. Javaだけで顔の認識をさせてみる

サンプルの中に、顔認識のアプリであるOpenCV Sample face-detectionなるアプリがあるのですが、なんでか、C++のコードとまぜまぜに書かれています。なので、Android NDKの設定が必要で、上の手順どおりだとエラーが表示されるはず。これをJavaの部分だけをピックアップしてみたのがこのコード。NDK無しで動くはずです。

 https://www.dropbox.com/s/2pf7l3t00ibb3ly/OpencvDetectionJavaOnly.zip

コードの中にも書いてるんですけど、読み込むxmlファイルを変えれば、検出する部位も変えれるっぽいです。







 

 

このページのトップヘ