Ubuntu で OpenCV for Android SDK を使ってみる (書きかけ)
- OpenCV for Android SDK のダウンロード
前準備
前準備として,下記のインストールが済んでいること.
- JDK (Java Development Kit)のバージョン1.6.0_2以上と、Android SDK のインストールが終わっていること
→ Ubuntu: Ubuntu での Android Studio についての Web ページ
- Eclipse, Eclipse の プラグイン Android Development Toolsのインストールが終わっていること
→ Ubuntu: Ubuntu での Eclipse, Eclipse の プラグイン Android Development Tools についての Web ページ
- Android NDK, Eclipse の プラグイン C/C++ 開発ツール,C/C++ 開発ツール SDK, C/C++ ライブラリ API ドキュメント・ホーバー・ヘルプのインストールが終わっていること
OpenCV for Android SDK のダウンロード
- Web ページを開く
http://sourceforge.net/projects/opencvlibrary/files/opencv-android/
- 最新バージョン をクリック
- zip ファイルをダウンロード
- 分かりやすいディレクトリに解凍
cd /usr/local sudo unzip /tmp/OpenCV-2.4.5-android-sdk.zip sudo chown -R $USER OpenCV-2.4.5-android-sdk
確認のためサンプルプログラムをビルドしてみる
- サンプルプログラムのディレクトリに移動
jni を使っているらしい次の3つのディレクトリのどれかに移動する.
- tutorial-2-mixedprocessing
- native-activity
- face-detection
◆ 実行手順例
cd /usr/local/OpenCV-2.4.5-android-sdk/samples cd tutorial-2-mixedprocessing
- ビルドしてみる
エラーメッセージが出ないことを確認する
ndk-build
OpenCV for Android のサンプルプログラムを動かしてみる
参考Web ページ https://docs.opencv.org/doc/tutorials/introduction/android_binary_package/android_dev_intro.html
参考Web ページ https://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html
Eclipse で OpenCV for Android SDK ソースコードからの Android プロジェクト作成と実行
OpenCV for Android SDK ソースコードは、Eclipse のプロジェクトとしてインポートしやすい形式になっている.
- Eclipse の起動
-
「ファイル (File)」
→
「新規 (New)」
→
「プロジェクト (Project)」 と操作する
- 既存コードからの Android プロジェクト (Android Project from Existing Code) を選ぶ
- プロジェクトのインポートに関する設定を行う.
「ルート・ディレクトリー」を選ぶ.
ここには OpenCV for Android SDK のディレクトリを指定する.
「プロジェクトをワークスペースにコピー (Copy projects into workspace)」にチェックしないこと
C プログラムの編集、ビルドが Eclipse で行えるようにするための設定
Eclipse 上で ndk-build の操作ができるようにしたいので, 「Convert to a C/C++ Porject (Adds C/C++ Nature)」を実行する.
- まず,「ファイル (File)」
→
「新規 (New)」
→
「その他 (Other)」
-
C/C++
→
C/C++ プロジェクトへ変換 (C/C++ ネーチャー追加) (Convert to a C/C++ Porject (Adds C/C++ Nature))と操作する
- まず、変換したいプロジェクトを選ぶ.
さきほどインポートした OpenCV for Android SDK のプロジェクトをすべて選ぶ.
- 次にMakefile プロジェクト (Makefile project) を選び,「他のツールチェーン (Other Toolchain)」を選ぶ.
「完了 (Finish)」 をクリック
これは、操作を間違えると、やり直すのがとても面倒なので、注意深く行う
- パースペクティブに関する確認
- 自動でビルドされる
ビルドの様子は、Eclipse のコンソールに表示される.しばらく待つ.
OpenCV for Android SDK ソースコードのビルド・エラーへの対処
OpenCV for Android SDK ソースコードは Windows + Eclipse で簡単にビルドできるように調整されているため, Ubuntu の場合には、いくつかの設定が必要.
◆ 元々の設定内容
- 「C/C++ ビルド (C/C++ Build)」の「ビルダー設定 (Builder Settings)」タブ.
ビルドコマンド: 「${NDKROOT}/ndk-build.cmd」または「make」
* 「${NDKROOT}/ndk-build.cmd」は Windows 用の設定. Ubuntu の場合には 「${NDKROOT}/ndk-build」のように修正する必要がある.
- 「C/C++ ビルド (C/C++ Build)」「振る舞い (Behaviour)」タブ.
「リソース保管時のインストール(自動ビルド)」がチェックされている (インポートした瞬間にビルドが始まったのはそのため)
- 「C/C++ 一般 (C/C++ General)」の「パスおよびシンボル (Paths and Symbols)」を開き,
「インクルード (Includes)」
次のように設定されている。
${NDKROOT}/platforms/android-9/arch-arm/usr/include ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include ${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include ...
◆ Ubuntu でエラーが出た時の対処手順例
- プロパティーの設定
エラーが出たプロジェクトを右クリックし,「プロパティー」を選ぶ.設定用のウインドウが現れる.
- 「C/C++ ビルド (C/C++ Build)」の「ビルダー設定 (Builder Settings)」タブを開く
- ビルドコマンドが「${NDKROOT}/ndk-build.cmd」になっていたら:
→ これは Windows 用の設定なので, 「${NDKROOT}/ndk-build」のように修正
- ビルドコマンドが「make」になっていたら:
→ 変更してはいけない
◆ ビルドコマンドの設定例
- Linux, MacOS の場合: 「${NDKROOT}/ndk-build」
- Windows の場合: 「${NDKROOT}/ndk-build.cmd」
◆ 環境変数 NDKROOT は、別のところで設定しておくこと. 例えば .bashrc に「 export NDKROOT=/usr/local/android-ndk-r8e 」のように設定するなど.
◆ 環境変数 NDKROOTの設定を忘れると、Eclipse のコンソールに次のようなエラーメッセージが出る
- ビルドコマンドが「${NDKROOT}/ndk-build.cmd」になっていたら:
実行してみる (エミュレータにデプロイ)
-
プロジェクトを右クリックし, 「実行 (Run)」 → 「Android Application」
- しばらく待つと, エミュレータの画面にメッセージが現れる.
- OpenCVライブラリを adb 等を使って転送する