OpenCV for AndroidをAndroid Studioに導入するメモ

  • 45
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

実行環境

2016/07/07現在
- Mac OSX El Capitan(おそらくWindowsでも大丈夫です)
- Android Studio for Mac V2.1.1
- OpenCV 3.1

OpenCVのダウンロード

OpenCV公式サイトから、OpenCV for Androidをクリックして次ページでしばらく待つとインストール開始。
スクリーンショット 2016-07-07 14.14.07.jpg

Android Studioで新規プロジェクトを作成

プロジェクト名は適当で構いません。プロジェクト名と保存場所を入力したら、Nextを押し、Phone and Tabletの項目のMinimum SDKのAPI Levelを覚えておいてください。(この場合だと23)

スクリーンショット 2016-07-07 14.21.18.jpg

引き続きレイアウトをEmpty、メインクラスの名前を適当に入力したら、プロジェクト生成完了です。

OpenCVモジュールの導入

プロジェクト生成が終了したら、「File > New > Import Module」を選択し、
スクリーンショット 2016-07-07 14.26.50.jpg
次の画面のSource Directoryに「(OpenCVを展開した場所)/OpenCV-android-sdk/sdk/java」と入力。
私の場合は

Users/(ユーザ名)/Documents/OpenCV-android-sdk/sdk/java

となります。Module nameは適当で結構です。
次画面でFinishを押すと、モジュールの取り込みは完了です。

OpenCVライブラリをプロジェクトに追加

ダウンロードしたOpenCVフォルダの中にある「sdk > native > libs」をコピーして、
スクリーンショット 2016-07-07 14.43.38.jpg
Android Studioプロジェクトの「(プロジェクト名) > app > src > main」にペースト。そして、このフォルダの名前を「jniLibs」に変更します。
スクリーンショット 2016-07-07 14.47.50.jpg

スクリーンショット 2016-07-07 14.48.19.jpg

モジュールの依存関係を設定する

Android Studioの「File > Project Structure」を開き、左側にある「app」を選択した上で、右上の「Dependencies」タブを開きます。右カラム左下の「+」ボタンを押し、「Module dependency」を選択すると、先ほど取り込んだライブラリが表示されるので、それを選択して「OK」を押す。
スクリーンショット 2016-07-07 14.54.58.jpg

スクリーンショット 2016-07-07 14.55.09.jpg

エラーが出ます

前項目までで説明が終わっている記事が多いですが、大抵エラーが出てしまいます。
おそらく前項目を終えた後に、コンソールにこのようなエラーが表示されています。
スクリーンショット 2016-07-07 14.57.22.jpg
これを処理していきましょう。
プロジェクトフォルダの、OpenCVモジュールの中に入って、「build.gradle」ファイルを開いてください。
スクリーンショット 2016-07-07 15.00.18.jpg
おそらく中身がこのようになっているかと思います。
スクリーンショット 2016-07-07 15.03.04.jpg
一方で、appフォルダ内の「build.gradle」ファイルを見てみてください。
スクリーンショット 2016-07-07 15.04.47.jpg

スクリーンショット 2016-07-07 15.06.43.jpg
こちらが現在Android Studioで実行しようとしているcompileSdkVersionとbuildToolsVersionなので、この2つの値をOpenCVファイルの方の「build.gradle」に写してください。
スクリーンショット 2016-07-07 15.14.08.jpg
minSdkVersionは一応14にしておきます。

そして最後に、はじめに指定したメインクラスを開き、
スクリーンショット 2016-07-07 15.16.25.jpg
上の黄色い警告の青文字「Try Again」を押すと、警告がすべて消えるはずです。
スクリーンショット 2016-07-07 15.15.38.jpg

OpenCV動作確認

メインクラスのonCreate関数を以下のように編集し、実行してください。

MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if(!OpenCVLoader.initDebug()){
        Log.i("OpenCV", "Failed");
    }else{
        Log.i("OpenCV", "successfully built !");
    }
}

コンソールに「OpenCV: successfully built !」が出力されれば導入完了です。
(ビルドに1、2分ほど時間がかかります...)
スクリーンショット 2016-07-07 15.29.27.jpg

おつかれさまでした!

追記

Android実機ではOpenCV Managerのインストールが自動的にGoogle Playを介して行われるので正常に動作するのですが、エミュレーターで実行しようとするとエラーが発生しアプリが落ちます。
これはAndroid StudioのSDKに、OpenCVのAPKをインストールすることにより解決できます。

まず、Android StudioのSDKの場所を確認します。
「File > Project Structure...」をクリックし、「SDK Location」の項目で場所を確認できます。
(この場合は/Users/Kodai/Library/Android/sdkです。)
スクリーンショット 2016-07-08 16.15.04.jpg

ここで、ターミナル(Windowsはコマンドプロンプト)を起動し、Android StudioのSDKないにある「platform-tools」ディレクトリに移動します。(以下は私の環境の場合なので適宜調整してください)

$ cd /Users/Kodai/Library/Android/sdk/platform-tools

次に、インストールしたOpenCVフォルダ内のAPKをインストールします。(こちらも適宜変更してください)

$ adb install ~/Documents/hack_u/OpenCV-android-sdk/apk/OpenCV_3.1.0_Manager_3.10_x86.apk

apkファイルは、実行するエミュレーターによって指定します。今回はAndroid Nexus 5x API 23 x86で実行していますので、このapkをインストールしました。

他にも以下の様な種類があります。

  • OpenCV_3.1.0_Manager_3.10_arm64-v8a.apk
  • OpenCV_3.1.0_Manager_3.10_armeabi-v7a.apk
  • OpenCV_3.1.0_Manager_3.10_armeabi.apk
  • OpenCV_3.1.0_Manager_3.10_mips.apk
  • OpenCV_3.1.0_Manager_3.10_mips64.apk
  • OpenCV_3.1.0_Manager_3.10_x86.apk
  • OpenCV_3.1.0_Manager_3.10_x86_64.apk

以上の工程を経て実行すると、エラーなく実行できます。