Flutter人脸识别插件myhr_facescan的使用
Flutter人脸识别插件myhr_facescan的使用
myhr_facescan
myhr_facescan
插件简化了与 Luxand 的集成。
人脸注册
人脸注册功能允许用户录入自己的面部信息。以下是人脸注册的示例代码:
EnrollFace(
licenseKey: Env.luxandLicenseKey,
onFinish: (templates) {
Get.off(LivenessPage(templates: templates));
},
)
参数说明
参数名称 | 描述 | 默认值 |
---|---|---|
licenseKey | Luxand 许可证密钥 | 无 |
imageStreamMilliSecond | 每隔多少毫秒捕获一张图像并发送到 Luxand | 100 毫秒 |
templateCount | 此次注册的模板总数 | 3 |
topMessage | 显示在面部矩形上方的消息 | ‘请触摸屏幕’ |
主动活体检测
主动活体检测用于确保录入的是真实的人脸,而不是照片或视频。以下是主动活体检测的示例代码:
ActiveLivenessVerifier(
licenseKey: Env.luxandLicenseKey,
onFinish: (success, template) {},
)
参数说明
参数名称 | 描述 | 默认值 |
---|---|---|
licenseKey | Luxand 许可证密钥 | 无 |
imageStreamMilliSecond | 每隔多少毫秒捕获一张图像并发送到 Luxand | 200 毫秒 |
failAcceptableInSecond | 如果 Luxand 在指定时间内未能检测到人脸,则返回失败 | 3 秒 |
匹配面部模板
匹配面部模板功能用于比对已录入的面部模板。以下是匹配面部模板的示例代码:
MatchTemplateScanner(
licenseKey: Env.luxandLicenseKey,
templates: con.templates,
onFinish: (success, template) {},
)
注意: 此组件目前仅支持比对模板,但尚不支持将数据发送给用户(开发中)。
示例代码
以下是完整的示例代码,展示了如何在 Flutter 应用程序中使用 myhr_facescan
插件。
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:myhr_facescan_example/active_liveness/index.dart';
import 'package:myhr_facescan_example/enroll/index.dart';
import 'package:myhr_facescan_example/match_face/index.dart';
import 'package:myhr_facescan_example/template_controller.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return const GetMaterialApp(home: HomePage());
}
}
class HomePage extends StatelessWidget {
const HomePage({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
var con = Get.put(TemplateController());
return Scaffold(
appBar: AppBar(
title: const Text('Luxand x Flutter'),
),
body: Center(
child: Column(
children: [
ElevatedButton(
onPressed: () => Get.to(const EnrollPage()),
child: const Text('录入人脸')),
ElevatedButton(
onPressed: () => Get.to(const ActiveLivenessPage()),
child: const Text('活体检测')),
ElevatedButton(
onPressed: () => Get.to(const MatchFacePage()),
child: const Text('匹配人脸')),
ElevatedButton(
onPressed: () async {
con.removeAll();
Get.snackbar('成功', '设备中的模板已删除。');
},
child: const Text('清除存储')),
ElevatedButton(
onPressed: () async {
Get.snackbar('总数: ${con.templates.length}', '');
},
child: const Text('获取模板总数')),
],
),
),
);
}
}
更多关于Flutter人脸识别插件myhr_facescan的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter人脸识别插件myhr_facescan的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成和使用myhr_facescan
插件进行人脸识别的代码示例。请确保你已经正确配置了Flutter开发环境,并且已经在pubspec.yaml
文件中添加了myhr_facescan
依赖。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加myhr_facescan
依赖:
dependencies:
flutter:
sdk: flutter
myhr_facescan: ^最新版本号 # 请替换为实际最新版本号
然后运行flutter pub get
来获取依赖。
2. 配置权限
由于人脸识别通常需要使用相机权限,你需要在AndroidManifest.xml
(针对Android)和Info.plist
(针对iOS)中添加相应的权限配置。
Android
在android/app/src/main/AndroidManifest.xml
中添加:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
iOS
在ios/Runner/Info.plist
中添加:
<key>NSCameraUsageDescription</key>
<string>需要访问相机以进行人脸识别</string>
3. 使用插件进行人脸识别
以下是一个简单的示例,展示如何在Flutter应用中使用myhr_facescan
插件进行人脸识别:
import 'package:flutter/material.dart';
import 'package:myhr_facescan/myhr_facescan.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
MyhrFacescan? _facescan;
String _result = "";
@override
void initState() {
super.initState();
_initFacescan();
}
Future<void> _initFacescan() async {
_facescan = MyhrFacescan();
// 检查并请求相机权限
bool hasPermission = await _facescan!.checkPermission();
if (!hasPermission) {
bool requestPermission = await _facescan!.requestPermission();
if (!requestPermission) {
setState(() {
_result = "相机权限被拒绝";
});
}
}
}
Future<void> _startFaceRecognition() async {
try {
var result = await _facescan!.startFaceRecognition();
setState(() {
_result = "人脸识别结果: ${result.toJson()}";
});
} catch (e) {
setState(() {
_result = "人脸识别失败: ${e.toString()}";
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter 人脸识别示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
_result,
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _startFaceRecognition,
child: Text('开始人脸识别'),
),
],
),
),
),
);
}
}
注意事项
- 权限处理:在实际应用中,你应该更细致地处理权限请求的结果,比如引导用户去设置中手动开启权限。
- 错误处理:在真实场景中,应该添加更多的错误处理逻辑,以确保应用的健壮性。
- UI设计:上述示例中的UI设计非常简单,你可以根据自己的需求进行美化。
这个示例展示了如何初始化myhr_facescan
插件,检查并请求相机权限,以及启动人脸识别并显示结果。请根据实际情况调整代码,并确保你遵循了myhr_facescan
插件的最新文档和API说明。