金子邦彦研究室プログラミングJavaScript による Web プログラミングUbuntu で OpenCV for Android SDK を使ってみる (書きかけ)

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. 最新バージョン をクリック

    [image]
  3. zip ファイルをダウンロード

    [image]
  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つのディレクトリのどれかに移動する.

    ◆ 実行手順例

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

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

    ndk-build
    

    [image]

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)」 と操作する

    [image]
  3. 既存コードからの Android プロジェクト (Android Project from Existing Code) を選ぶ

    [image]
  4. プロジェクトのインポートに関する設定を行う.

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

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

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

    [image]

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

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

    1. まず,「ファイル (File)」 → 「新規 (New)」 → 「その他 (Other)」

      [image]
    2. C/C++C/C++ プロジェクトへ変換 (C/C++ ネーチャー追加) (Convert to a C/C++ Porject (Adds C/C++ Nature))と操作する

      [image]
    3. まず、変換したいプロジェクトを選ぶ.

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

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

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

      [image]
    5. パースペクティブに関する確認

      [image]
    6. 自動でビルドされる

      ビルドの様子は、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)」タブ. 「リソース保管時のインストール(自動ビルド)」がチェックされている (インポートした瞬間にビルドが始まったのはそのため)

        [image]
      • 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 でエラーが出た時の対処手順例

    1. プロパティーの設定

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

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

      [image]

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

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

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