とあるプロジェクトで画像を二値化しなければならないことがあり、OpenCVのインポートが特殊だったため、まとめてみる.
準備するもの
・AndroidStudioがインストールされたパソコン ※ここではAndroidStudio1.5.1を使用する ・Android用のOpenCVライブラリ http://opencv.org/downloads.html ※ここではOpenCV3.1.0を使用する
導入方法
1 ダウンロードしたAndroid用のOpenCVを解凍する.
2. 解凍したファイルから、“OpenCV-android-sdk\sdk\java\project.properties”を開く.
3. project.propertiesのテキストを少し書き換える. 書き換え前
android.library=true
# Project target.
target=android-14
書き換え後
android.library=true
# Project target.
target=android-23
※tartgetをandroid-22以上にしないとOpencv内にあるcamera2を使われているJavaプログラムがエラーを起こす. この記事おいてはandroid-23に設定した.
4. AndroidStudioでプロジェクトを立ち上げ、OpenCVライブラリをインポートする. AndroidStudioのタブから、“File -> New -> ImportModule”を選択
“Source Directory”には”OpenCV-android-sdk\sdk\java”を設定してください.
“Next”を押して、次の画面で”Finish”を押すとインポートが始まる. “openCVLibrary310”が追加されていればインポート完了.
5. プロジェクトに”jniLibs”フォルダを作成し、その中に”armeabi-v7a”フォルダを作成する.
6. “armeabi-v7a”フォルダ内にOpenCVフォルダにある”\OpenCV-android-sdk\sdk\native\libs\armeabi-v7a\libopencv_java3.so”を入れる.
7. AndroidStudioのタブから、“File -> Project Structure…”を選択する.
8. “app”を選択し、タブの”Dependencies”を選択後、右側にある”+“を押す. “Module dependency”を選択し、“:openCVLibrary310”を選択し、“ok”を押す.
9. さらに”右下にある”OK”を押す.
10. あとはOpenCVを思う存分使ってください. とりあえず二値化と顔認識したサンプル
.
GitHub: http://github.com/Momijinn/SampleOpenCV
注意! OpenCVをするときに、下記のコードを入力してください. エラー出ます.
if (!OpenCVLoader.initDebug()) {
//エラーメッセージを入れる
}
多分こんなエラー↓ No implementation found for long org.opencv.core.Mat.n_Mat() (tried Java_org_opencv_core_Mat_n_1Mat and Java_org_opencv_core_Mat_n_1Mat__)
参考
- OpenCV for Android の導入方法 http://qiita.com/kassy_kz/items/f4dfd2e4c9691b8aa1d5
- StackOvwrFlow http://stackoverflow.com/questions/11939192/unsatisfied-link-error-opencv-for-android-non-native