ubuntu10.10でopencv-androidのサンプルコンパイル
まずは・・・
http://opencv.willowgarage.com/wiki/Android
をチェック。
このあとの説明はほぼすべてここの説明の焼き直しです。
あとsdkはもう既にインストール済みであるという前提です。
パスもしっかり通してあるていでよろ。
$ cat ~/.profile |tail-2 PATH="$HOME/src/android-sdk-linux_x86/tools:$PATH" PATH="$HOME/src/android-sdk-linux_x86/platform-tools:$PATH" $ source ~/.profile
手っ取り早くopencvのサンプルアプリをインストール。
手っ取り早くサンプルをインストールして見たいなら
http://code.google.com/p/android-opencv/downloads/detail?name=CVCamera.0.7.apk
をandroid端末のブラウザでダウンロードしてインストールするか、もしくはandroidをつないでコマンドライン上で
$ adb install CVCamera.0.7.apk
を実行
あと、このadbからのインストールの場合には、usbドライバの設定が必要。
ubuntu上でusbドライバ設定するには
HTC Desire HDなどのandroidをつないだ状態で、
$ lsusb Bus 002 Device 004: ID 056e:0035 Elecom Co., Ltd Bus 002 Device 003: ID 413c:2003 Dell Computer Corp. Keyboard Bus 002 Device 002: ID 8087:0020 Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0bb4:0ca2 High Tech Computer Corp. Bus 001 Device 002: ID 8087:0020 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub $ sudo emacs /etc/udev/rules.d/51-android.rules $ cat /etc/udev/rules.d/51-android.rules SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
0bb4がベンダーであるHTCを意味しており、0ca2はHTC Desire HDといった製品を意味するはず。
ベンダー名"HTC"を許可しますよという設定だと勝手に解釈してる。
ちなみに、ここを参考にしました。
http://y-anz-m.blogspot.com/2010/03/androidubuntu-xperia.html
この後に
$ adb kill-server ; sudo /ほにゃらら/android-sdk-linux_x86/tools/adb start-server
を実行。これでデバイスをadbで認識するので、adb installなどできます。
いちいち打つのが面倒なので、~/.bash_aliasesにaliasすることをおすすめします。次のような感じで。
$ emacs ~/.bash_aliases $ source ~/.bash_aliases $ cat ~/.bash_aliases alias adbconnect='adb kill-server;sudo /ほにゃらら/android-sdk-linux_x86/platform-tools/adb start-server $ adbconnect # do it
opencvの取得とコンパイル
いよいよ本題の自分でコンパイルについて。
subversionで最新版のopencvをとってきます。
$ svn co https://code.ros.org/svn/opencv/trunk/opencv/ $ cd opencv $ mkdir release $ cd release $ cmake ../ $ make; sudo make install
cmakeをする際に必要なモジュールがなかったら、apt-getでとってきてくらさい。例えば、GTKだったら
$ sudo apt-get install libgtk2.0-dev
とか。
opencvのandroidコンパイル
まずndkの改造版をhttp://www.crystax.net/android/ndk-r4.phpからとってきてください。
$ cd ~ $ wget "http://www.crystax.net/data/android-ndk-r4-linux-x86-crystax-4.tar.bz2" $ tar xvf android-ndk-r4-linux-x86-crystax-4.tar.bz2
ここで重要なのはndkをホームディレクトリに解凍することです。
後々のパスの設定で$HOME/android-ndk-r4-crystaxが適用されます。
ちょっとキモいですが、文句はopencvの著者にどうぞ。
さて、buildです。
あ、その前にswigはインストールしておいてくらさい。
staticライブラリのビルド。
$ cd opencv/android $ mkdir build $ make
次にandroid-jniのビルド。
これが後のプロジェクトへの橋渡し役になります。
$ cd opencv/android/android-jni $ make ERROR local environement not setup! try: gedit local.env.mk Makefile:12: *** Please setup the local.env.mk - the default was just created'. 中止. $ make $ sh ./project_create.sh $ ant compile
一回目のmakeは気にせずに、2回目のmakeを実行。
sh project_create.sh
で次のようにうまくいかない場合は、
Error: The project either has no target set or the target is invalid. Please provide a --target to the 'android update' command.
$ android update project --name android-opencv --path . --target 2
などとターゲット指定。
ant compileで
BUILD FAILED <android-sdk-root>\tools\ant\lib_rules.xml:121: Refrence android.libraries.src not found
になった場合はbuild.xmlを修正。
$ emacs build.xml $ diff build.xml build.xml~ -u --- build.xml 2011-02-08 02:28:04.329244958 +0900 +++ build.xml~ 2011-02-08 02:19:18.396426362 +0900 @@ -80,6 +80,5 @@ - customize to your needs. --> <setup /> - <path id="android.libraries.src"><path refid="project.libraries.src" /></path> - <path id="android.libraries.jars"><path refid="project.libraries.jars" /></path> + </project>
といった感じで、setupタグの終わりにpathを2行挿入。
またコンパイルは、gcj-jdkとopen-jdkなどが入っていて、sun-java6-jdkを入ってないケースでもエラーになる。
その場合、
$ sudo apt-get --purge remove gcj-jdk $ #その他いろいろ削除 $ sudo apt-get autoremove $ sudo add-apt-repository "deb http://archive.canonical.com/ lucid parter" $ sudo apt-get update $ sudo apt-get install sun-java6-jdk
などでsun-java6-jdkを入れると通る。
Calibrationサンプルのインストール
$ cd opencv/android/apps/Calibration $ sh project_create.sh # if you fail, set target such as: android update project --name CVCamera --path . --target 2 $ ant debug $ ant install
sh project_create.shでだめだったらまたターゲットを指定して実行。
ant installの際には実機デバイスをつないでおく必要がある。
これでCalibrationがインストールされるはず。
CVCameraサンプルのインストール
Calibrationとほぼ同様。
$ cv opencv/android/apps/CVCamera
$ sh build.sh
$ make
$ sh project_create.sh # if you fail, set tartget such as: android update project --name CVCamera --path . --target 2
$ ant debug
$ ant install