Edited at

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

More than 3 years have passed since last update.


実行環境

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

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