Flutter人脸识别插件flutter_bdface_plugin的使用
Flutter人脸识别插件flutter_bdface_plugin的使用
一. 安卓初始化和配置
1. 在实际项目中增加入口 application class
FaceSDKManager.getInstance().initialize
传入自己申请到的授权文件 (修改字符串miaomumu-face-android)
public class MainApplication extends FlutterApplication {
@Override
public void onCreate() {
super.onCreate();
initFacePlugin();
}
private void initFacePlugin() {
// 初始化SDK
FaceSDKManager.getInstance().initialize(this, "miaomumu-face-android",
"idl-license.face-android", new IInitCallback() {
@Override
public void initSuccess() {
Log.e("baidu", "初始化成功");
}
@Override
public void initFailure(final int errCode, final String errMsg) {
Log.e("baidu", "初始化失败 = " + errCode + " " + errMsg);
}
});
// 随机动作
Config.isLivenessRandom = true;
// 根据需求添加活体动作
Config.livenessList.clear();
Config.livenessList.add(LivenessTypeEnum.Eye);
// 设置 FaceConfig
FaceConfig config = FaceSDKManager.getInstance().getFaceConfig();
// 设置可检测的最小人脸阈值
config.setMinFaceSize(FaceEnvironment.VALUE_MIN_FACE_SIZE);
// 设置可检测到人脸的阈值
config.setNotFaceValue(FaceEnvironment.VALUE_NOT_FACE_THRESHOLD);
// 设置模糊度阈值
config.setBlurnessValue(FaceEnvironment.VALUE_BLURNESS);
// 设置光照阈值(范围0-255)
config.setBrightnessValue(FaceEnvironment.VALUE_BRIGHTNESS);
// 设置遮挡阈值
config.setOcclusionValue(FaceEnvironment.VALUE_OCCLUSION);
// 设置人脸姿态角阈值
config.setHeadPitchValue(FaceEnvironment.VALUE_HEAD_PITCH);
config.setHeadYawValue(FaceEnvironment.VALUE_HEAD_YAW);
// 设置闭眼阈值
config.setEyeClosedValue(FaceEnvironment.VALUE_CLOSE_EYES);
// 设置图片缓存数量
config.setCacheImageNum(FaceEnvironment.VALUE_CACHE_IMAGE_NUM);
// 设置活体动作,通过设置list,LivenessTypeEunm.Eye, LivenessTypeEunm.Mouth,
// LivenessTypeEunm.HeadUp, LivenessTypeEunm.HeadDown, LivenessTypeEunm.HeadLeft,
// LivenessTypeEunm.HeadRight, LivenessTypeEunm.HeadLeftOrRight
config.setLivenessTypeList(Config.livenessList);
// 设置动作活体是否随机
config.setLivenessRandom(Config.isLivenessRandom);
// 设置开启提示音
config.setSound(true);
// 原图缩放系数
config.setScale(FaceEnvironment.VALUE_SCALE);
// 抠图高的设定,为了保证好的抠图效果,我们要求高宽比是4:3,所以会在内部进行计算,只需要传入高即可
config.setCropHeight(FaceEnvironment.VALUE_CROP_HEIGHT);
// 加密类型,0:Base64加密,上传时image_sec传false;1:百度加密文件加密,上传时image_sec传true
config.setSecType(FaceEnvironment.VALUE_SEC_TYPE);
FaceSDKManager.getInstance().setFaceConfig(config);
// 初始化资源文件
FaceSDKResSettings.initializeResId();
}
}
2. 修改实际项目 AndroidManifest.xml 的入口application 节点添加 android:name=".MainApplication"
二. IOS初始化和配置
导入项目资源文件。(下载demo中的 bundle, 图片文件, 授权文件)
if(Platform.isIOS){
new FlutterBdfacePlugin().initIosSdk("xxx-face-ios");
}
更多关于Flutter人脸识别插件flutter_bdface_plugin的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter人脸识别插件flutter_bdface_plugin的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_bdface_plugin
是一个用于在 Flutter 应用中集成百度人脸识别功能的插件。通过这个插件,你可以轻松地在 Flutter 应用中实现人脸检测、活体检测等功能。
安装
首先,你需要在 pubspec.yaml
文件中添加 flutter_bdface_plugin
依赖:
dependencies:
flutter:
sdk: flutter
flutter_bdface_plugin: ^版本号
然后运行 flutter pub get
来安装依赖。
配置
Android
-
添加权限:在
AndroidManifest.xml
中添加必要的权限:<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-
配置百度人脸识别 SDK:在
AndroidManifest.xml
中添加百度人脸识别 SDK 的配置:<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="你的百度API_KEY" />
-
配置 ProGuard:如果你启用了 ProGuard,需要在
proguard-rules.pro
中添加以下规则:-keep class com.baidu.idl.face.** { *; }
iOS
-
添加权限:在
Info.plist
中添加相机权限:<key>NSCameraUsageDescription</key> <string>我们需要访问相机以进行人脸识别</string>
-
配置百度人脸识别 SDK:在
Info.plist
中添加百度人脸识别 SDK 的配置:<key>BaiduFaceAPIKey</key> <string>你的百度API_KEY</string>
使用
-
初始化插件:在应用启动时初始化插件:
import 'package:flutter_bdface_plugin/flutter_bdface_plugin.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await FlutterBdfacePlugin.initSDK("你的百度API_KEY"); runApp(MyApp()); }
-
调用人脸识别:在需要的地方调用人脸识别功能:
import 'package:flutter_bdface_plugin/flutter_bdface_plugin.dart'; class FaceRecognitionPage extends StatelessWidget { Future<void> startFaceRecognition() async { try { var result = await FlutterBdfacePlugin.startFaceRecognition(); print("人脸识别结果: $result"); } catch (e) { print("人脸识别失败: $e"); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('人脸识别'), ), body: Center( child: ElevatedButton( onPressed: startFaceRecognition, child: Text('开始人脸识别'), ), ), ); } }
处理结果
startFaceRecognition
方法会返回一个包含人脸识别结果的 Map
,你可以根据返回的结果进行相应的处理。例如:
var result = await FlutterBdfacePlugin.startFaceRecognition();
if (result['success']) {
// 人脸识别成功
print("人脸识别成功: ${result['data']}");
} else {
// 人脸识别失败
print("人脸识别失败: ${result['error']}");
}