Flutter人脸活跃度检测插件face_liveliness_detection的使用

Flutter人脸活跃度检测插件face_liveliness_detection的使用

索引

什么是人脸活跃度检测?

人脸活跃度检测在生物识别面部识别中是一种方法,确保相机前的人是一个真实存在的活人。这种技术有助于区分真实的在场与试图欺骗系统的尝试,例如当欺诈者使用他人的物理特征或生物数据(称为“假体”)进行冒名顶替时。

假体技术包括打印的照片、视频记录、深度伪造图像和3D面具,这些都构成了重大风险。为了对抗这些威胁,人脸活跃度检测采用先进的功能来识别和防止生物识别假体攻击。这些攻击通常涉及模仿某人的独特生物识别特征以欺骗或绕过系统的认证过程。虽然面部识别可以可靠地确认该人是否为正确匹配,但它无法验证他们是否活着。人脸活跃度检测弥补了这一差距,在检测和预防欺诈方面发挥着关键作用。为了保持生物识别系统的信任并保护数据完整性,它们必须有效检测和对抗假体攻击。

平台支持

iOS Android MacOS Web Linux Windows
✔️ ✔️

安装

首先,我们需要在Flutter中安装该插件。

Flutter设置

face_liveliness_detection添加到你的pubspec.yaml依赖项中。

使用命令行
flutter pub add face_liveliness_detection

原生设置

接下来是在Android和iOS上的原生设置。

iOS
iOS设置
  1. 在Xcode中打开项目并设置部署目标。
  2. 打开ios/Runner/Info.plist文件作为源代码。
  3. <dict>标签内添加以下代码:
    <key>NSCameraUsageDescription</key>
    <string>Camera Access for Scanning</string>
    <key>NSMicrophoneUsageDescription</key>
    <string>Microphone for playing instructions audio.</string>
    
  4. 打开ios/Runner/Podfile并取消注释第二行。
    platform :ios, '14.0' # &lt;---------- 取消注释此行
    
  5. 在Xcode项目中设置部署目标。 截图
Android
Android设置
  1. 打开example/android/app/build.gradle文件并将minSdkVersion设置为21
    minSdkVersion 21
    

示例

调用一个单行函数将返回捕获图像的临时路径。

代码

final String? response = await FaceLivelinessDetection.instance.detectLivelyness(
  context,
  config: FaceLivelinessDetectionConfig(
    steps: [
      FaceLivelinessStepItem(
        step: FaceLivelinessStep.blink,
        title: "Blink",
        isCompleted: false,
      ),
      FaceLivelinessStepItem(
        step: FaceLivelinessStep.smile,
        title: "Smile",
        isCompleted: false,
      ),
    ],
    startWithInfoScreen: true,
  ),
);

示例代码

import 'package:face_liveliness_detection_example/index.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: FaceLivelinessExampleScreen(),
    );
  }
}

更多关于Flutter人脸活跃度检测插件face_liveliness_detection的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter人脸活跃度检测插件face_liveliness_detection的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


face_liveliness_detection 是一个用于 Flutter 的插件,主要用于检测人脸活跃度(即判断人脸是否为真实的活体而非照片或视频)。以下是如何在 Flutter 项目中使用该插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 face_liveliness_detection 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  face_liveliness_detection: ^1.0.0  # 请查看最新版本号

然后运行 flutter pub get 来安装依赖。

2. 配置项目

根据插件的文档,你可能需要在 AndroidiOS 项目中进行一些配置。例如,在 Android 项目中的 AndroidManifest.xml 文件中添加必要的权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />

iOS 项目中,你可能需要在 Info.plist 文件中添加相机访问权限:

<key>NSCameraUsageDescription</key>
<string>我们需要访问您的相机以进行人脸活跃度检测。</string>

3. 使用插件

在你的 Flutter 代码中,首先导入插件:

import 'package:face_liveliness_detection/face_liveliness_detection.dart';

然后,你可以使用 FaceLivelinessDetection 类来启动人脸活跃度检测。以下是一个简单的示例:

class FaceLivelinessPage extends StatefulWidget {
  [@override](/user/override)
  _FaceLivelinessPageState createState() => _FaceLivelinessPageState();
}

class _FaceLivelinessPageState extends State<FaceLivelinessPage> {
  bool _isLive = false;
  String _message = '请将脸部对准摄像头';

  Future<void> _checkLiveliness() async {
    try {
      final result = await FaceLivelinessDetection.detect();
      setState(() {
        _isLive = result.isLive;
        _message = result.isLive ? '检测通过,活体检测成功' : '检测失败,请重试';
      });
    } catch (e) {
      setState(() {
        _message = '检测出错: $e';
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('人脸活跃度检测'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(_message),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _checkLiveliness,
              child: Text('开始检测'),
            ),
            SizedBox(height: 20),
            Text(_isLive ? '活体检测通过' : '未通过'),
          ],
        ),
      ),
    );
  }
}
回到顶部