2015-11-26 26 views
6

Android ADTを使用して静的にopenCVを初期化しようとしています。そのため、アプリケーションビルドに含まれており、ユーザーはAndroidのプレイストアからopenCVマネージャをダウンロードする必要はありません。アンドロイドスタティック初期化opencv 3.0ライブラリ "opencv_java3"を読み込めません

アム使用OpenCVのV3段階(http://opencv.org/downloads.html

だけ顔検出OpenCVの-アンドロイドSDKの\サンプル\内のサンプルのいずれかに静的初期化を追加しようとしています。

私は多くの例を見て一例(http://docs.opencv.org/2.4/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html

を追ったが、まだ働いて、それを得るためになし解決策が出ています。誰かが手伝ってくれることを願っています。

libopencv_java3.soがフォルダ内にないと思われたlibs/armeabi-v7a/コピーして貼り付けると、OpenCV-android-sdk\sdk\native\libs\armeabi-v7aから消えます。私はこれがndkの設定方法と関係があると信じています。もちろん、この問題はまったく異なるものかもしれません。

LogCatはこれを与える:

11-26 16:36:33.647: D/OpenCV/StaticHelper(13993): Trying to load library opencv_java3 
11-26 16:36:33.647: D/OpenCV/StaticHelper(13993): Cannot load library "opencv_java3" 
11-26 16:36:33.647: W/System.err(13993): java.lang.UnsatisfiedLinkError: Couldn't load opencv_java3 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.opencv.samples.facedetect-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.opencv.samples.facedetect-1, /vendor/lib, /system/lib, /vendor/lib]]]: findLibrary returned null 
11-26 16:36:33.767: D/OpenCV/StaticHelper(13993): Trying to load library opencv_java3 
11-26 16:36:33.767: D/OpenCV/StaticHelper(13993): Cannot load library "opencv_java3" 
11-26 16:36:33.767: W/System.err(13993): java.lang.UnsatisfiedLinkError: Couldn't load opencv_java3 from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/org.opencv.samples.facedetect-1.apk"],nativeLibraryDirectories=[/data/app-lib/org.opencv.samples.facedetect-1, /vendor/lib, /system/lib, /vendor/lib]]]: findLibrary returned null 
+3

これを修正することができました。同じ問題を抱えている他の人に役立つかもしれないという希望でこのコメントを投稿しています。 jni/Android.mkで行を#OPENCV_INSTALL_MODULES:= onからOPENCV_INSTALL_MODULES:= onに変更しました。これでlibsencv_java3.soがlibs/armeabi-v7a/libopencv_java3.soに追加されました。 –

答えて

10

包み誰かがこの問題に出くわすとAndroidStudioを使用しています。 OpenCvProject/openCVLibrary310/source/mainフォルダにOpenCV-android-sdk \ sdk \ native \ libs

というフォルダをコピーしてjniLibsという名前に変更するだけで修正できます。デバイスから最初にそれを削除してくださいあなたはすでにAndroidStudioのうち、あなたのプロジェクトを実行した場合は OpenCvProject/openCVLibrary310 /ソース/メイン/ jniLibs/ enter image description here

:次のようになり、最終的な構造は、だから。それ以外の場合、AndroidStudioはそれを再デプロイしない可能性があります。そのため、libsをコピーしない可能性があります。

libsを実際のプロジェクトにコピーして、openCVLibraryフォルダにコピーしないでも、私はそれを試しませんでした。

+0

これは90 MB以上のapkファイルを作成しています。 _おそらく、すべてのプラットフォームでコンパイルされているからですか? –

+0

はい、[splitits](https://stackoverflow.com/a/42019169/3125070)をgradleに追加する必要があります –

0

を私は何時間もこの問題に取り組んでいました。私は楽しみのために何かを試してみました。私は、私はちょうど前にロードされたOpenCVのを追加System.loadLibrary("whateverYourLibraryWasCalled");上の問題を抱えて:

static { 
    System.loadLibrary("opencv_java3"); 
    System.loadLibrary("MyOpencvLibs"); 
} 

、すべてがうまく働きました。

関連する問題