76
88

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-07-07

実行環境

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

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

76
88
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
76
88

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?