【发布时间】:2019-07-13 11:16:30
【问题描述】:
我需要在我的 Flutter 应用中实现实时人脸解锁功能,请建议最好的方法,我也了解了 ML_kit(firebase) 和 openCV,但都支持人脸检测,我正在寻找人脸识别。
请为 Flutter 推荐任何库或 SDK。
【问题讨论】:
我需要在我的 Flutter 应用中实现实时人脸解锁功能,请建议最好的方法,我也了解了 ML_kit(firebase) 和 openCV,但都支持人脸检测,我正在寻找人脸识别。
请为 Flutter 推荐任何库或 SDK。
【问题讨论】:
如果您只希望 iOS 具有此功能并且您使用的是 iPhone X,则可以使用 local_auth 包。
你可以这样使用它:
initializeFaceRecognition() async {
if (Platform.isIOS) {
bool canCheckBiometrics = await _localAuth.canCheckBiometrics;
if (!canCheckBiometrics) {
setState(() => _authenticationResult = 'This device does not support biometrics');
return;
}
List<BiometricType> availableBiometrics = await _localAuth.getAvailableBiometrics();
if (!availableBiometrics.contains(BiometricType.face)) {
setState(() => _authenticationResult = 'This device does not support face recognition');
return;
}
bool didAuthenticate = await _localAuth.authenticateWithBiometrics(localizedReason: 'Authenticate with face recognition', useErrorDialogs: true);
if (didAuthenticate) {
setState(() => _authenticationResult = 'Authenticated');
} else {
setState(() => _authenticationResult = 'Not authenticated');
}
} else {
setState(() => _authenticationResult = 'Not compatible platform');
}
}
现在,如果您想在 Android 上使用它,那在当时是不可能的,因为人脸识别不会像指纹那样暴露在 API 上。
在这种情况下,您应该创建自己的 ML 模型和 API 来进行人脸识别,或者使用像 Face API from Azure 这样的 API(这不是实时的,您必须上传图片)。但此时,这应该是另一个问题,因为它超出了 Flutter 应用的范围。
我找到了Trueface API,它显然允许您从实时流中检测人脸。也许这项服务更接近您的需求(它不是免费的)。
【讨论】:
USE_FINGERPRINT,他们建议使用 USE_BIOMETRIC。