Android ADT
を使用して、openCVを静的に初期化しようとしているため、アプリビルドに含まれ、ユーザーはAndroid playstoreからopenCVManagerをダウンロードする必要はありません。
OpenCV v3を使用しています( http://opencv.org/downloads.html )
OpenCV-Android-sdk\samples\face-detectionのサンプルの1つに静的初期化を追加しようとしている段階。
私は例に従いました( 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
誰かがこの問題に遭遇し、AndroidStudioを使用している場合に備えて。 OpenCV-Android-sdk\sdk\native\libsフォルダーをコピーするだけで修正できます
openCvProject/openCVLibrary310/source/mainに移動し、名前をjniLibsに変更します。最終的な構造は次のようになります。OpenCvProject/ openCVLibrary310/source/main/jniLibs/
すでにAndroidStudioからプロジェクトを実行している場合は、必ず最初にデバイスからプロジェクトを削除してください。そうしないと、AndroidStudioが再デプロイせず、そのためにライブラリをコピーできない可能性があります。
LibsをopenCVLibraryフォルダーではなく実際のプロジェクトにコピーした場合にも機能する可能性がありますが、私はそれを試しませんでした。
Opencv.mkを含める前に、「ON」に設定されたモジュールをインストールするオプションがあることを確認してください。
OPENCV_INSTALL_MODULES:=on
include ${OPENCV_Android_SDK}/${Android_SDK_JNI}/OpenCV.mk
すでにメイクファイルに変数を設定しています
私は最近この質問に出会う!これは、「app/src/main/jniLibs」フォルダーではなく、「app/src/main/cpp/libs」(カスタム)フォルダーに配置するためです。
フォルダパス:
ランタイムエラー:
APKコンテンツ:
libopencv_Java3.so
がapkファイルにパックされていないことがわかります。
'so'フォルダーパスを "app/src/main/jniLibs"に変更し、 "CMakeLists.txt"を変更しました。
jniLibsを使用する:
プロジェクトを構築します。
見える。
libopencv_Java3.so
を見つけることができます。
とアプリは正常に実行されます。
したがって、すべての「so」ファイルをjniLibsフォルダーに配置する必要があると思います。
他のフォルダを使用したい場合。 「build.gradle」で設定する必要があります
楽しみとVOILÁのためだけに何かを試したとき、私はこの問題と何時間も戦いました! System.loadLibrary("whateverYourLibraryWasCalled");
で問題が発生したので、ロードされたOpenCVを直前に追加します。
static {
System.loadLibrary("opencv_Java3");
System.loadLibrary("MyOpencvLibs");
}
そして、すべてがうまくいきました。