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

1 回复

更多关于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

  1. 添加权限:在 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" />
    
  2. 配置百度人脸识别 SDK:在 AndroidManifest.xml 中添加百度人脸识别 SDK 的配置:

    <meta-data
        android:name="com.baidu.lbsapi.API_KEY"
        android:value="你的百度API_KEY" />
    
  3. 配置 ProGuard:如果你启用了 ProGuard,需要在 proguard-rules.pro 中添加以下规则:

    -keep class com.baidu.idl.face.** { *; }
    

iOS

  1. 添加权限:在 Info.plist 中添加相机权限:

    <key>NSCameraUsageDescription</key>
    <string>我们需要访问相机以进行人脸识别</string>
    
  2. 配置百度人脸识别 SDK:在 Info.plist 中添加百度人脸识别 SDK 的配置:

    <key>BaiduFaceAPIKey</key>
    <string>你的百度API_KEY</string>
    

使用

  1. 初始化插件:在应用启动时初始化插件:

    import 'package:flutter_bdface_plugin/flutter_bdface_plugin.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await FlutterBdfacePlugin.initSDK("你的百度API_KEY");
      runApp(MyApp());
    }
    
  2. 调用人脸识别:在需要的地方调用人脸识别功能:

    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']}");
}
回到顶部