我在使用Tensorflow和AndroidScanner时遇到了问题。
我使用Tensorflow在相机Feed上显示叠加层。我用相机拍照,然后将其发送到服务器。它有效。
现在我导入了AndroidScannerDemo,我想使用拍摄的照片并使用新导入的模块裁剪/转换它。它崩溃了。当我打开ScanActivity(来自AndroidScannerDemo)时,它会尝试加载opencv,但永远不会成功。错误消息如下:
FATAL EXCEPTION: main Process: fr.pacifica.insurancechat.debug, PID: 2139 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/fr.pacifica.insurancechat.debug-OI_d1EANbiczpZEwAHYdkw==/base.apk"],nativeLibraryDirectories=[/data/app/fr.pacifica.insurancechat.debug-OI_d1EANbiczpZEwAHYdkw==/lib/arm64, /data/app/fr.pacifica.insurancechat.debug-OI_d1EANbiczpZEwAHYdkw==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]] couldn't find "libopencv_java3.so" at java.lang.Runtime.loadLibrary0(Runtime.java:1011) at java.lang.System.loadLibrary(System.java:1657) at com.scanlibrary.ScanActivity.(ScanActivity.java:125) at java.lang.Class.newInstance(Native Method) at android.app.Instrumentation.newActivity(Instrumentation.java:1190) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2837) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3046) at android.app.ActivityThread.-wrap11(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1688) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:164) at android.app.ActivityThread.main(ActivityThread.java:6809) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
当我从gradle / code中删除TensorFlow引用时,导入的模块工作正常。
答案 0 :(得分:2)
您导入的项目仅构建32位版本的 libScanner.so ,因此仅使用32位版本的libopencv_java3.so。在短期内,你可以保留它,只设置
android {
defaultConfig {
ndk {
abiFilters 'armeabi-v7a'
}
}
}
这将导致您的APK在arm64设备上以32位模式运行。
从长远来看,您应该将Scanner库更新为64位版本。这可能会带来显着的性能提升。
答案 1 :(得分:0)
我在某些手机(64位处理器)上遇到了同样的问题
这是您需要的每个库的库。您可以下载并手动导入。