TensorFlow + AndroidScanner-找不到“ libopencv_java3.so”

jer*_*myb 2 java-native-interface android opencv tensorflow

我在结合Tensorflow和AndroidScanner时遇到问题。

我使用Tensorflow在相机Feed上显示覆盖图。我用相机拍照,然后将其发送到服务器。有用。

现在,我导入了AndroidScannerDemo,我想使用所拍摄的图片,并使用新导入的模块对其进行裁剪/转换。它崩溃了。当我打开ScanActivity(从AndroidScannerDemo)时,它尝试加载opencv,但从未成功。错误消息如下:

致命异常:主要

    流程:fr.pacifica.insurancechat.debug,PID:2139
    java.lang.UnsatisfiedLinkError:dalvik.system.PathClassLoader [DexPathList [[zip文件“ /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 / vendor / lib64]]]找不到“ libopencv_java3.so”
    在java.lang.Runtime.loadLibrary0(Runtime.java:1011)
    在java.lang.System.loadLibrary(System.java:1657)
    在com.scanlibrary.ScanActivity。(ScanActivity.java:125)
    在java.lang.Class.newInstance(本地方法)
    在android.app.Instrumentation.newActivity(Instrumentation.java:1190)
    在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2837)
    在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3046)
    在android.app.ActivityThread.-wrap11(未知来源:0)
    在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1688)
    在android.os.Handler.dispatchMessage(Handler.java:105)
    在android.os.Looper.loop(Looper.java:164)
    在android.app.ActivityThread.main(ActivityThread.java:6809)
    在java.lang.reflect.Method.invoke(本机方法)
    在com.android.internal.os.Zygote $ MethodAndArgsCaller.run(Zygote.java:240)
    在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

当我从gradle / code中删除TensorFlow引用时,导入的模块可以正常工作。

Ale*_*ohn 5

您导入的项目仅生成32位版本的libScanner.so,因此仅使用32位版本的libopencv_java3.so。在短期内,您可以保留该设置

android {
  defaultConfig {
    ndk {
      abiFilters 'armeabi-v7a'
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这将导致您的APK在arm64设备上以32位模式运行。

从长远来看,您也应该更新Scanner库以使其以64位构建。这可能会显着提高性能。

从2019年8月开始,Play商店中的所有应用都需要64位支持