この文書について
Androidで OpenCVを使った画像処理を行う実験をしたときのメモ。
あとでもうちょっと親切に書くかもしれないけど、とりあえず howmに書き溜めた箇条書きをちょっと整形しただけ。
手順
OpenCV Android SDKを入手
今回落としたのは 3.1.0。適当なところに展開しておく
OpenCV Managerをインストール
どちらかやりやすい方で
- SDKの中に入っている apkを adb install
- google playからインストール
※ OpenCVのライブラリは大きいので、 OpenCV Managerがライブラリを管理してアプリケーションはそれを参照する、という形にしているらしい。商用のアプリケーションだと一つのパッケージに収まっている方が好ましいだろうが、今回は実験なのでその方法は見送り。
プロジェクト作成
OpsnCVStudyとか。 Minimum API Levelは 8とかでも大丈夫っぽい。
OpenCVライブラリ 310をインポート
- File → New → Import Module
- SDKのディレクトリ下にある sdk/javaを選択
- モジュール openCVLibrary310をインポート
- インポート直後のビルドでエラーが出るが気にしない
manifest
manifestに以下を追加。プロジェクトの API levelが低い時に出るエラーを抑制する
<uses-sdk tools:overrideLibrary="org.opencv"/>
build.gradle(app)
openCVLibrary310への依存関係を追加
dependencies {
...
compile project(':openCVLibrary310')
...
}
build.gradle(openCVLibrary310)
compileSdkVersion, targetSdkVersionを最新のものにする。これでインポート時に出ていたエラーが消える
アクティビティ実装
Launch Activityの onResumeでライブラリをロードする。 mLoaderCallbackはコードアシストが適当に生成してくれる
@Override
protected void onResume() {
super.onResume();
if (!OpenCVLoader.initDebug()) {
Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
boolean ret = OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0, this, mLoaderCallback);
if (!ret) {
// OpenCV Manager does not exist
}
} else {
Log.d(TAG, "OpenCV library found inside package. Using it!");
mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
}
}