TensorFlow + AndroidScanner - не удалось найти "libopencv_java3.so" - PullRequest
0 голосов
/ 18 мая 2018

У меня проблема с объединением 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)

Когда я удаляю ссылки TensorFlow из gradle / code, импортированный модуль работает нормально.

Ответы [ 2 ]

0 голосов
/ 13 августа 2019

У меня была такая же проблема с некоторыми мобильными телефонами (64-битный процессор)

Вот библиотеки, которые вам нужны для каждой отдельной архитектуры.Вы можете скачать его и импортировать вручную.

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

0 голосов
/ 18 мая 2018

Импортированный вами проект создает только 32-разрядные версии libScanner.so и поэтому использует только 32-разрядные версии libopencv_java3.so.В краткосрочной перспективе вы можете сохранить это значение, установив только

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

. Это приведет к запуску вашего APK в 32-битном режиме на устройствах arm64.

В долгосрочной перспективе вы должны обновитьбиблиотека сканера для встраивания 64-битная тоже.Это может привести к значительному увеличению производительности.

с августа 2019 г., 64-разрядная поддержка требуется для всех приложений в Play Store

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...