OpenCV2.3.1を使ってああだこうだと言ってたのが1年前の今頃。

例えば、こことか、こことか、こことか....。

その間SATCHなどというヤクザなものに引っかかっているうちにバージョンが2.3.1->2.4.6にアップしてました(2013/07/09現在)。

NyMMDと連動させるにあたり、2.4系のOpenCVを使ってみます。

OpenCV android-sdkの2.4.2~2.4.6まで試してみました。

まず、2.4.2と2.4.3ですが...。

src\org\opencv\engine\OpenCVEngineInterface.aidlに問題があるみたいで、genに展開されたjavaファイルでエラーが発生してしまい、検証できませんでした。

SDKのToolのaidl.exeを使ってみましたが、結果は同じでした。


2.4.4の場合

注意点は、これ以降のバージョンでは、「android-ndk」を使うということです。

これでC++のプロジェクトをビルドする...ってことかな。

また、端末では「OpenCV Manager」というものも使います。
(何をmanageしているかというと....どうも端末情報とかOpenCVのライブラリをチェックしているみたい)

事前にGooglePlayで検索してインストールしておいてください。


android-ndkをインストール(というか解凍したものを移動)したらパスを控えておいてください。
後で、Properties->C/C++ Buildのndk-build.cmdのパス設定に使います。

OpenCV-2.4.4-android-sdkを展開したら、Eclipseを起動してOpenCVフォルダーの中のsdkフォルダーをインポートの対象にします。

インポートしたらPropertiesのandoidでtargetを4.03以上で、Is Libraryにチェックを入れてOKをクリック。

これでOpenCV-2.4.4がライブラリとして使えます。

で、sampleから何かのプロジェクトを読み込んだら2け所修正。

Propertiesのandoidで「OpenCV Library-2.4.4」をAdd。

次に、C/C++ Buildで「Build Command」を先に控えたandroid-ndkのパスでndk-build.cmdを指定してください。


2.4.5と2.4.6の場合


インストールの仕方は同じなので、2.4.6で説明します。

ダウンロードはここから。
OpenCV-2.4.6-android-sdk-r2.zip



「android-ndk」と「OpenCV Manager」については上と同じ。

android-sdkを展開してEclipseでインポート。

こんな感じ。





プロジェクトのPropertiesを開きます。

ライブラリーとして使います。



サンプルをインポートしたら、まず「OpenCV Library-2.4.6」をAddしましょう。

サンプルのプロジェクトのPropertiesを開きます。

バッテンになっているのをRemove。



「Add」をクリックして「OpenCV Library-2.4.6」を選んでOK。



ここが、2.4.4と違うところですが、Android.mkを修正しておきます。

OpenCV.mkがどこにあるのかわからん...というメッセージがコンソールに吐き出される場合ですが....。

Project Explorerで、jni/Android.mkを開きます。

include ../../sdk/native/jni/OpenCV.mkとなっているパスを、

展開したOpenCV-2.4.6-android-sdk内のOpenCV.mkのフルパスに変更しておきます。

次に、C/C++ Buildで「Build Command」を先に控えたandroid-ndkのパスでndk-build.cmdを指定。



これでエラーが無くなるはず。




開発環境

Windows XP(sp3)

Eclipse SDK Version 3.7.2

Target:Android 2.3.3 or later

動作確認実機:Xperia acro(docomo) Android 2.3.4、datb01 (docomo) Android 4.1.2

サンプルのFace Detectionアプリです。

こんな感じで顔検出。



実機では、ほぼすべての顔が検出されていました。

「ほぼ」というのは、横顔に近い松波の場合、目と鼻の周囲のみ検出されているみたいでした。

また武井の23が検出されるという不思議な現象もありました。

メニュです。

顔がカメラ画面に対して何%くらいを占めていれば検出するかの設定です。

Javaメニュの意味はまだ不明。





このアプリは公開予定のないサンプルです。

インストール・実行は自己責任でお願いします。

それと、OpenCVManagerを先にインストールしておいてくださいね。

インストール

Target:Android 2.3.3 or later

動作確認実機:Xperia acro(docomo) Android 2.3.4



アプリをQRコードからインストールする方法はコチラを参照


タブレットの場合

QRコードでダウンロードすると、Downloadフォルダー内でzipファイルになってインストールできない状態の場合があります。

その場合は、拡張子のzipをapkに変更してファイル名をタップすればインストール用のダイアログが出ますので、そこからインストールしてください。




他のOpenCV関連ページ

OpenCV覚書

矩形領域の座標を取得するページ

OpenCV 2.3.1でカスケードを作って、Androidで使ってみる

アンドロイドでOpenCV(お顔の検出)

アンドロイドでOpenCV(色検出)

アンドロイドでOpenCV(特徴点検出)

Android OpenCV 2.3.1で画像認識

OpenCV + NyMMDで初音ミクさんにご挨拶してもらいます

Android OpenCV 2.4.6 の顔検出アプリを一から作ってみる