当我试图打电话
/// runs and transforms the data 🤖
this._interpreter.run(input, output);
this._interpreter = await Interpreter.fromAsset('mobilefacenet.tflite', 选项:解释器选项);
得到这个错误
加载动态库“libtensorflowlite_c.so”失败:dlopen 失败:找不到库“libtensorflowlite_c.so”
对于 Windows 用户:
在记事本上复制所有这些行:
@echo off
setlocal enableextensions
cd %~dp0
set TF_VERSION=2.5
set URL=https://github.com/am15h/tflite_flutter_plugin/releases/download/
set TAG=tf_%TF_VERSION%
set ANDROID_DIR=android\app\src\main\jniLibs\
set ANDROID_LIB=libtensorflowlite_c.so
set ARM_DELEGATE=libtensorflowlite_c_arm_delegate.so
set ARM_64_DELEGATE=libtensorflowlite_c_arm64_delegate.so
set ARM=libtensorflowlite_c_arm.so
set ARM_64=libtensorflowlite_c_arm64.so
set X86=libtensorflowlite_c_x86_delegate.so
set X86_64=libtensorflowlite_c_x86_64_delegate.so
SET /A d = 0
:GETOPT
if /I "%1"=="-d" SET /A d = 1
SETLOCAL
if %d%==1 CALL :Download %ARM_DELEGATE% armeabi-v7a
if %d%==1 CALL :Download %ARM_64_DELEGATE% arm64-v8a
if %d%==0 CALL :Download %ARM% armeabi-v7a
if %d%==0 CALL :Download %ARM_64% arm64-v8a
CALL :Download %X86% x86
CALL :Download %X86_64% x86_64
EXIT /B %ERRORLEVEL%
:Download
curl -L -o %~1 %URL%%TAG%/%~1
mkdir %ANDROID_DIR%%~2\
move /-Y %~1 %ANDROID_DIR%%~2\%ANDROID_LIB%
EXIT /B 0
将文件保存为
install.bat
,并将文件放在项目的根目录中。
在资源管理器中打开并在那里打开一个命令窗口。
键入
install.bat
并按Enter。如果您想使用 install.bat -d
和 GpuDelegateV2
,请改用 NnApiDelegate
(Windows)。
对于 Linux/Mac 用户:
在记事本上复制所有这些行
#!/usr/bin/env bash
cd "$(dirname "$(readlink -f "$0")")"
# Available versions
# 2.5, 2.4.1
TF_VERSION=2.5
URL="https://github.com/am15h/tflite_flutter_plugin/releases/download/"
TAG="tf_$TF_VERSION"
ANDROID_DIR="android/app/src/main/jniLibs/"
ANDROID_LIB="libtensorflowlite_c.so"
ARM_DELEGATE="libtensorflowlite_c_arm_delegate.so"
ARM_64_DELEGATE="libtensorflowlite_c_arm64_delegate.so"
ARM="libtensorflowlite_c_arm.so"
ARM_64="libtensorflowlite_c_arm64.so"
X86="libtensorflowlite_c_x86_delegate.so"
X86_64="libtensorflowlite_c_x86_64_delegate.so"
delegate=0
while getopts "d" OPTION
do
case $OPTION in
d) delegate=1;;
esac
done
download () {
wget "${URL}${TAG}/$1" -O "$1"
mkdir -p "${ANDROID_DIR}$2/"
mv $1 "${ANDROID_DIR}$2/${ANDROID_LIB}"
}
if [ ${delegate} -eq 1 ]
then
download ${ARM_DELEGATE} "armeabi-v7a"
download ${ARM_64_DELEGATE} "arm64-v8a"
else
download ${ARM} "armeabi-v7a"
download ${ARM_64} "arm64-v8a"
fi
download ${X86} "x86"
download ${X86_64} "x86_64"
将文件保存为install.sh名称,并将文件放在项目的根目录中。
在那里打开一个命令窗口。
键入
sh install.sh
并按Enter。如果您想使用 sh install.sh -d
和 GpuDelegateV2
,请使用 NnApiDelegate
。
我有同样的错误。希望这对某人有帮助。
使用
install.sh
文件后,显示该错误(仅在Android 上,iOS 工作正常)。但是我在安装文件中将 wget
更改为 curl
并且它下载了一个重定向 html 页面。
对我有用的替代品是:
# wget "${URL}${TAG}/$1" -O "$1" # Replaced with the below line
curl -L "${URL}${TAG}/$1" -o "$1"
尝试确认您下载的文件是正确的文件。您可以在
<projectdirectory>/android/app/src/main/jniLibs
中检查这些文件。它们应该是以 ^?ELF
开头的二进制文件,而不是像我那样的 html 文件。
你需要在找到的应用程序的根目录下添加一个文件 tflite_flutter 包。 tflite_flutter。你也可以在这里找到它。 只需下载文件并将其放入应用程序的根目录中,然后双击即可安装所需的信息。 (适用于 Windows)
安卓:
将脚本 install.sh (Linux/Mac) 或 install.bat (Windows) 放在项目的根目录下。
执行 sh install.sh(https://github.com/am15h/tflite_flutter_plugin/blob/master/install.sh) (Linux) / install.bat(https://github.com/am15h/tflite_flutter_plugin/ blob/master/install.bat) (Windows) 在项目的根目录下,自动下载二进制文件并将其放置在适当的文件夹中。
注意:安装的二进制文件将不包括对 GpuDelegateV2 和 NnApiDelegate 的支持,但是 InterpreterOptions().useNnApiForAndroid 仍然可以使用。
如果您想使用这些 GpuDelegateV2 和 NnApiDelegate,请改用 sh install.sh -d (Linux) 或 install.bat -d (Windows)。 阅读更多:https://pub.dev/packages/tflite_flutter