Ubuntu で OpenCV for Android SDK を使ってみる (書きかけ)

前準備

前準備として,下記のインストールが済んでいること.

  1. JDK (Java Development Kit)のバージョン1.6.0_2以上と、Android SDK のインストールが終わっていること

    → Ubuntu: Ubuntu での Android Studio についての Web ページ

  2. Eclipse, Eclipse の プラグイン Android Development Toolsのインストールが終わっていること

    → Ubuntu: Ubuntu での Eclipse, Eclipse の プラグイン Android Development Tools についての Web ページ

  3. Android NDK, Eclipse の プラグイン C/C++ 開発ツール,C/C++ 開発ツール SDK, C/C++ ライブラリ API ドキュメント・ホーバー・ヘルプのインストールが終わっていること

    Android NDK についての Web ページ

OpenCV for Android SDK のダウンロード

  1. Web ページを開く

    http://sourceforge.net/projects/opencvlibrary/files/opencv-android/

  2. 最新バージョン をクリック
  3. zip ファイルをダウンロード
  4. 分かりやすいディレクトリに解凍
    cd /usr/local
    sudo unzip /tmp/OpenCV-2.4.5-android-sdk.zip 
    sudo chown -R $USER OpenCV-2.4.5-android-sdk
    

確認のためサンプルプログラムをビルドしてみる

  1. サンプルプログラムのディレクトリに移動

    jni を使っているらしい次の3つのディレクトリのどれかに移動する.

    • tutorial-2-mixedprocessing
    • native-activity
    • face-detection

    ◆ 実行手順例

    cd /usr/local/OpenCV-2.4.5-android-sdk/samples
    cd tutorial-2-mixedprocessing
    
  2. ビルドしてみる

    エラーメッセージが出ないことを確認する

    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 のプロジェクトとしてインポートしやすい形式になっている.

  1. Eclipse の起動
  2. ファイル (File)」 → 「新規 (New)」 → 「プロジェクト (Project)」 と操作する
  3. 既存コードからの Android プロジェクト (Android Project from Existing Code) を選ぶ
  4. プロジェクトのインポートに関する設定を行う.

    ルート・ディレクトリー」を選ぶ.

    ここには OpenCV for Android SDK のディレクトリを指定する.

    プロジェクトをワークスペースにコピー (Copy projects into workspace)」にチェックしないこと

C プログラムの編集、ビルドが Eclipse で行えるようにするための設定

Eclipse 上で ndk-build の操作ができるようにしたいので, 「Convert to a C/C++ Porject (Adds C/C++ Nature)」を実行する.

  1. まず,「ファイル (File)」 → 「新規 (New)」 → 「その他 (Other)」
  2. C/C++C/C++ プロジェクトへ変換 (C/C++ ネーチャー追加) (Convert to a C/C++ Porject (Adds C/C++ Nature))と操作する
  3. まず、変換したいプロジェクトを選ぶ.

    さきほどインポートした OpenCV for Android SDK のプロジェクトをすべて選ぶ.

  4. 次にMakefile プロジェクト (Makefile project) を選び,「他のツールチェーン (Other Toolchain)」を選ぶ. 「完了 (Finish)」 をクリック

    これは、操作を間違えると、やり直すのがとても面倒なので、注意深く行う

  5. パースペクティブに関する確認
  6. 自動でビルドされる

    ビルドの様子は、Eclipse のコンソールに表示される.しばらく待つ.

OpenCV for Android SDK ソースコードのビルド・エラーへの対処

OpenCV for Android SDK ソースコードは Windows + Eclipse で簡単にビルドできるように調整されているため, Ubuntu の場合には、いくつかの設定が必要.

◆ 元々の設定内容

◆ Ubuntu でエラーが出た時の対処手順例

  1. プロパティーの設定

    エラーが出たプロジェクトを右クリックし,「プロパティー」を選ぶ.設定用のウインドウが現れる.

  2. 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 のコンソールに次のようなエラーメッセージが出る

実行してみる (エミュレータにデプロイ)

  1. プロジェクトを右クリックし, 「実行 (Run)」 → 「Android Application

  2. しばらく待つと, エミュレータの画面にメッセージが現れる.
  3. OpenCVライブラリを adb 等を使って転送する