OpenCVのビルド
こんにちは。貴之です。
OpenCV(特に顔検出)+Androidを自分の課題としています。
特に個人の検出はPicasaをはじめ、世の中にいろいろあるようです。
面白いのがこちら。
驚いたのがイギリスのサリー大学のZdenek Kalalさんのこれには、驚愕しました。
私の方はなんとかOpenCVのCVCameraを起動できたところです。
四苦八苦しましたが、以下やった手順です。
①K3の手順通りCygwinを入れておきます
②NDKとOpenCV2.2をインストールします
OpenCV2.2同梱のREADME.android.txtに
以下のように書いてある通り、C++が拡張されたNDKr4しかコンパイルできないようです。
--------------------------------------------------------------------
Make sure to set the path in the cache for the crystax ndk available
here:
http://www.crystax.net/android/ndk-r4.php
--------------------------------------------------------------------
上記URLからNDKr4を落とします。
OpenCV2.2についてですが、SVNから最新を落とすと、一部記述をコメントアウトしないとビルドエラーを起こしてしまうため、今回はこちらの版を使用しました。
それから
bzip2 -dc OpenCV-2.2.0.tar.bz2 | tar xvf -
と解凍しました。
それをCygwinのユーザーのルートにNDKとOpenCV2.2のディレクトリを
cygwin─home─┬android-ndk-r4-crystax
└OpenCV-2.2.0
のようにおきます。
このようにしなくてもよいですが、面倒なパスの記述の書き換えが不要なので、このようにデフォルトの配置にしました。
③NDKのパスを環境変数で設定しておく
ex)C:\cygwin\home\<ユーザー>\android-ndk-r4-crystax
を環境変数のPathに設定しておきます。
試しに
android-ndk-r4-crystax\samples\hello-jni\jni
配下で
ndk-build
としてみて、正常にコンパイルできればOKです。できないと以下の作業に失敗します。
④OpenCVライブラリのコンパイル
OpenCV-2.2.0\androidのディレクトリ配下で、README.android.txtに書いてある通り
--------------------------------------------------------------------
mkdir build
cd build
cmake ..
make
--------------------------------------------------------------------
とするとandroid-jni\libs\armeabiとarmeabi-v7aの下にそれぞれ
libandroid-opencv.so
が生成されました。
#こちら本当に参考になりました。有難うございます。
⑤サンプルCVCameraのコンパイル
OpenCV-2.2.0\android\apps\CVCamera
配下で
make
とやるとコンパイルが走ります。
libs配下に
libcvcamera.so
が生成されていればOKです。
⑥OpenCVをeclipseのプロジェクトに参加させる
eclipseを開いて先ほど④でコンパイルしたプロジェクト(android-jni)を
File->New->Android Project->Create project from existing source
で指定してプロジェクトに参加させます。
プロジェクトのプロパティを開いて
Androidをクリックし、下の方にあるIs Libraryにチェックを入れます。
⑦サンプルCVCameraをプロジェクトに参加させる
手順⑤で生成したプロジェクト(CVCamera)を手順⑥と同じようにひとまずプロジェクトに参加させます。
同じようにプロジェクトのプロパティを開いて
Androidをクリックし、今度は下の方にあるAddボタンをクリックします。
手順⑥でプロジェクトに参加させたandroid-jniがダイアログに表示されていると思いますので、クリックしてライブラリの追加を行います。
#Is Libraryはここではチェックしません。
#Java Build Pathでlibandroid-opencv.soを指定すると起動時に落ちてしまいます。私はここではまってしまいました。
#こちらを読まれることをお勧めします。
⑧いよいよサンプル起動
実機を接続しつつCVCameraのプロジェクトを右クリックして
Run As->AndroidApplicationで起動します。
やっと入り口といったところでしょうか。
OpenCV(特に顔検出)+Androidを自分の課題としています。
特に個人の検出はPicasaをはじめ、世の中にいろいろあるようです。
面白いのがこちら。
驚いたのがイギリスのサリー大学のZdenek Kalalさんのこれには、驚愕しました。
私の方はなんとかOpenCVのCVCameraを起動できたところです。
四苦八苦しましたが、以下やった手順です。
①K3の手順通りCygwinを入れておきます
②NDKとOpenCV2.2をインストールします
OpenCV2.2同梱のREADME.android.txtに
以下のように書いてある通り、C++が拡張されたNDKr4しかコンパイルできないようです。
--------------------------------------------------------------------
Make sure to set the path in the cache for the crystax ndk available
here:
http://www.crystax.net/android/ndk-r4.php
--------------------------------------------------------------------
上記URLからNDKr4を落とします。
OpenCV2.2についてですが、SVNから最新を落とすと、一部記述をコメントアウトしないとビルドエラーを起こしてしまうため、今回はこちらの版を使用しました。
それから
bzip2 -dc OpenCV-2.2.0.tar.bz2 | tar xvf -
と解凍しました。
それをCygwinのユーザーのルートにNDKとOpenCV2.2のディレクトリを
cygwin─home─
└OpenCV-2.2.0
のようにおきます。
このようにしなくてもよいですが、面倒なパスの記述の書き換えが不要なので、このようにデフォルトの配置にしました。
③NDKのパスを環境変数で設定しておく
ex)C:\cygwin\home\<ユーザー>\android-ndk-r4-crystax
を環境変数のPathに設定しておきます。
試しに
android-ndk-r4-crystax\samples\hello-jni\jni
配下で
ndk-build
としてみて、正常にコンパイルできればOKです。できないと以下の作業に失敗します。
④OpenCVライブラリのコンパイル
OpenCV-2.2.0\androidのディレクトリ配下で、README.android.txtに書いてある通り
--------------------------------------------------------------------
mkdir build
cd build
cmake ..
make
--------------------------------------------------------------------
とするとandroid-jni\libs\armeabiとarmeabi-v7aの下にそれぞれ
libandroid-opencv.so
が生成されました。
#こちら本当に参考になりました。有難うございます。
⑤サンプルCVCameraのコンパイル
OpenCV-2.2.0\android\apps\CVCamera
配下で
make
とやるとコンパイルが走ります。
libs配下に
libcvcamera.so
が生成されていればOKです。
⑥OpenCVをeclipseのプロジェクトに参加させる
eclipseを開いて先ほど④でコンパイルしたプロジェクト(android-jni)を
File->New->Android Project->Create project from existing source
で指定してプロジェクトに参加させます。
プロジェクトのプロパティを開いて
Androidをクリックし、下の方にあるIs Libraryにチェックを入れます。
⑦サンプルCVCameraをプロジェクトに参加させる
手順⑤で生成したプロジェクト(CVCamera)を手順⑥と同じようにひとまずプロジェクトに参加させます。
同じようにプロジェクトのプロパティを開いて
Androidをクリックし、今度は下の方にあるAddボタンをクリックします。
手順⑥でプロジェクトに参加させたandroid-jniがダイアログに表示されていると思いますので、クリックしてライブラリの追加を行います。
#Is Libraryはここではチェックしません。
#Java Build Pathでlibandroid-opencv.soを指定すると起動時に落ちてしまいます。私はここではまってしまいました。
#こちらを読まれることをお勧めします。
⑧いよいよサンプル起動
実機を接続しつつCVCameraのプロジェクトを右クリックして
Run As->AndroidApplicationで起動します。
やっと入り口といったところでしょうか。
スポンサーサイト
Androidを触り始めた1年を振り返ってみた。
tanakaです。
すいません、仕事の関係でテンパって更新できませんでした。
そうこうしているうちにいつの間にかもう4月、
Android開発チームにも新入社員が増えてだんだん賑やかになってきました。
4月といえば、自分が初めてAndroidに触ったのも4月で、ほぼ1年前の話になります。
当時はまだ、「Androidって何?」くらいの勢いで何も知らないながらも開発言語がJavaであること、それから個人的に好きなSonyEricsson発のスマートフォン「Xperia X10」の発売もあり、ここはいっちょ触ってみようなどと初めてのAndroid端末を手に入れました。
そして、手に入れただけでは飽き足らず、とりあえず自分の使いたいと思ったアプリを作成して実際にAndroidマーケットに公開したりもしました。
最近ではあまり更新できてないんだけれど、更新した後にユーザから「使いやすくなった」とか「不具合出てます」とかって意見をもらった時には正直うれしかった。
実際に自分が作ったものに対する意見をもらえる機会って、下のほうの開発ばかりやってる仕事のほうではあまりななかったので。
「自分が作ったものが誰かの役に立ってる」って思うと、気持ちになります。
それから早いもので1年が過ぎて、Android端末も各キャリアから大量に発表されるようになり携帯業界的にも結構激動の1年だったの出はないかと思います。
個人的にも転職してAndroidの開発を行うようになったりと激動の1年だったわけですが、それはまた別の話かな。。。
それはさておき、上述した通り1年でかなりの数のAndroid端末がリリースされ、さらにそれに追い打ちをかけるようにAndroid OSのバージョンアップが行われたりと開発したアプリが動作する環境も増えてそれこそゾッとするほどの機種依存とか出てくるようになるんでしょうかね?
アプリとか開発する側からすると、あまりメーカーごとの作りこみとかして欲しくないですが、そうもいかないんでしょうね。
でもまぁ、それが出来るところがAndroidの良さであるわけだし、実際ユーザーとして使う自分の「Xperia X10」にしてもOSのアップデートが行われて出来ることが増えるのはうれしいことなので仕方がないのかな?
とりあえず、Androidの素敵な未来を想像しながら今回はこの辺で失礼します。
すいません、仕事の関係でテンパって更新できませんでした。
そうこうしているうちにいつの間にかもう4月、
Android開発チームにも新入社員が増えてだんだん賑やかになってきました。
4月といえば、自分が初めてAndroidに触ったのも4月で、ほぼ1年前の話になります。
当時はまだ、「Androidって何?」くらいの勢いで何も知らないながらも開発言語がJavaであること、それから個人的に好きなSonyEricsson発のスマートフォン「Xperia X10」の発売もあり、ここはいっちょ触ってみようなどと初めてのAndroid端末を手に入れました。
そして、手に入れただけでは飽き足らず、とりあえず自分の使いたいと思ったアプリを作成して実際にAndroidマーケットに公開したりもしました。
最近ではあまり更新できてないんだけれど、更新した後にユーザから「使いやすくなった」とか「不具合出てます」とかって意見をもらった時には正直うれしかった。
実際に自分が作ったものに対する意見をもらえる機会って、下のほうの開発ばかりやってる仕事のほうではあまりななかったので。
「自分が作ったものが誰かの役に立ってる」って思うと、気持ちになります。
それから早いもので1年が過ぎて、Android端末も各キャリアから大量に発表されるようになり携帯業界的にも結構激動の1年だったの出はないかと思います。
個人的にも転職してAndroidの開発を行うようになったりと激動の1年だったわけですが、それはまた別の話かな。。。
それはさておき、上述した通り1年でかなりの数のAndroid端末がリリースされ、さらにそれに追い打ちをかけるようにAndroid OSのバージョンアップが行われたりと開発したアプリが動作する環境も増えてそれこそゾッとするほどの機種依存とか出てくるようになるんでしょうかね?
アプリとか開発する側からすると、あまりメーカーごとの作りこみとかして欲しくないですが、そうもいかないんでしょうね。
でもまぁ、それが出来るところがAndroidの良さであるわけだし、実際ユーザーとして使う自分の「Xperia X10」にしてもOSのアップデートが行われて出来ることが増えるのはうれしいことなので仕方がないのかな?
とりあえず、Androidの素敵な未来を想像しながら今回はこの辺で失礼します。