代码之家  ›  专栏  ›  技术社区  ›  jeremyb

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

  •  3
  • jeremyb  · 技术社区  · 6 年前

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

    我使用Tensorflow在相机馈送上显示覆盖图。我用相机拍了一张照片,然后把它发送到服务器。它起作用了。

    现在我导入了 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引用时,导入的模块工作正常。

    2 回复  |  直到 6 年前
        1
  •  5
  •   Alex Cohn    5 年前

    您导入的项目只生成32位版本的 libScanner。所以 ,因此只使用32位版本的libopencv_java3。所以短期内,你可以保持这一点,只需设置

    android {
      defaultConfig {
        ndk {
          abiFilters 'armeabi-v7a'
        }
      }
    }
    

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

    从长远来看,您也应该将扫描仪库更新为内置64位。这可能会显著提高性能。

    自2019年8月起,Play Store中的所有应用程序都需要64位支持

        2
  •  0
  •   Javier Diaz    5 年前

    我在一些手机上也遇到了同样的问题(64位处理器)

    以下是每个Arquit体系结构所需的LIB。您可以下载它并手动导入。

    https://github.com/jhansireddy/AndroidScannerDemo/tree/2cd23d3d362d0a6248cf489a79ebc4ba2c425c60/ScanDemoExample/scanlibrary/src/main/libs