recognito-vision/Android-FaceRecognition-FaceLivenessDetection
GitHub: recognito-vision/Android-FaceRecognition-FaceLivenessDetection
基于NIST FRVT顶级算法的Android离线人脸识别与活体检测SDK,提供1:1/1:N人脸搜索及防伪验证能力。
Stars: 110 | Forks: 28
# 人脸识别、活体检测、姿态估计 Android SDK 演示
Latest NIST FRVT Report
### 📰 _Recognito 开发者新闻_
-

1:1 & 1:N [**Windows .NET 人脸识别、活体检测演示**](https://github.com/recognito-vision/FaceRecognition-LivenessDetection-CSharp-.Net)。
- 全球覆盖 [**身份证/护照 OCR 移动端演示**](https://github.com/recognito-vision/Android-ID-Document-Recognition/tree/main) 和 [**ID Document Recognition 服务器端演示**](https://github.com/recognito-vision/Linux-ID-Document-Recognition)。
- 通过我们的 [**人脸识别 Web 演示**](https://github.com/recognito-vision/Linux-FaceRecognition-FaceLivenessDetection/tree/main/Identification(1%3AN)-Demo) 试用 **1:N 人脸搜索**。
- 从我们的 [**API Hub**](https://rapidapi.com/organization/recognito) 订阅 **免费 API** 用于您的应用或网站。
本仓库包含 Recognito Android 人脸识别 SDK 的演示。
该 SDK 包含人脸识别、活体检测和姿态估计等高级功能。
Recognito 的人脸识别算法在 **NIST FRVT** (Face Recognition Vendor Test) 中排名第一。
我们的 ID 验证 [**产品列表**](https://github.com/recognito-vision/Product-List/)。
##

RECOGNITO 产品文档

##

功能特性
- **人脸识别:** 通过比较面部特征来识别和验证个人身份。
- **活体检测:** 判断人脸是真实的还是伪造的,以防止认证过程中的欺诈行为。
- **姿态估计:** 估计检测到的人脸的姿态,包括 Yaw(偏航角)、Roll(翻滚角)、Pitch(俯仰角)。
### - 附加特性
- **NIST FRVT Top 1 算法:** 采用在 NIST FRVT 中排名靠前的人脸识别算法,提供准确可靠的结果。
- **本地部署:** 完全在您的基础设施内运行,确保数据隐私和安全。
- **实时性:** 以极低的延迟执行人脸识别、活体检测和姿态估计。
- **完全离线:** 无需互联网连接即可运行,确保可靠性和数据隐私。
##

演示视频
[

](https://www.youtube.com/watch?v=9HM70PFa4lQ)
Recognito Youtube 频道: [youtube.com/@recognito-vision](https://www.youtube.com/@recognito-vision)
##

下载 APK
##

SDK 集成
要在您的 Android 项目中使用 Recognito SDK,请按照以下步骤操作:
#### 1. 将 `libfacesdk` 添加到项目中
- 将 SDK 文件夹添加到您的 Android 项目目录中。
- 将以下依赖项添加到您的 `build.gradle` 和 `settings.gradle` 文件中:
https://github.com/recognito-vision/Android-FaceRecognition-FaceLivenessDetection/blob/601379c51970400b5c90972854b3468beef683ea/app/build.gradle#L50-L52
https://github.com/recognito-vision/Android-FaceRecognition-FaceLivenessDetection/blob/601379c51970400b5c90972854b3468beef683ea/settings.gradle#L17-L19
#### 2. 应用许可证
- 如需试用许可证,请提供您的应用 ID。
https://github.com/recognito-vision/Android-FaceRecognition-FaceLivenessDetection/blob/601379c51970400b5c90972854b3468beef683ea/app/build.gradle#L6-L15
- 将您的许可证添加到 `assets/license` 文件中:
https://github.com/recognito-vision/Android-FaceRecognition-FaceLivenessDetection/blob/b4fd7788bc3f4dc14dc8bf08c1730923cf255b6b/app/src/main/assets/license?plain=1#L1-L5
- 使用许可证初始化 SDK。
https://github.com/recognito-vision/Android-FaceRecognition-FaceLivenessDetection/blob/601379c51970400b5c90972854b3468beef683ea/app/src/main/java/com/bio/facerecognition/MainActivity.kt#L39-L47
初始化状态码:
| 代码 | 状态 |
|:------:|------|
|0|SDK 激活成功|
|-1|许可证密钥错误|
|-2|许可证 AppID 错误|
|-3|许可证已过期|
|-4|激活错误|
|-5|SDK 初始化错误|
#### 3. SDK API
##### - 激活 SDK
```
public static native int setActivation(String var0);
```
参数
- `var0`:许可证字符串。
- 返回值:一个代表 SDK 激活状态码的整数。
##### - 初始化 SDK
```
public static native int init(AssetManager var0);
```
参数
- `var0`:一个用于访问应用资产的 AssetManager 实例。
- 返回值:一个代表初始化状态码的整数。
##### - 将 YUV 相机帧转换为 Bitmap 图像
```
public static native Bitmap yuv2Bitmap(byte[] nv21, int width, int height, int orientation);
```
参数
- `nv21`:代表 NV21 格式 YUV 图像数据的字节数组。
- `width`:图像宽度。
- `height`:图像高度。
- `orientation`:图像方向
| 值 | 方向 |
|:----:|----|
|1|不处理|
|2|水平翻转|
|3|先水平翻转,再垂直翻转|
|4|垂直翻转|
|5|转置|
|6|顺时针旋转 90°|
|7|水平和垂直翻转 --> 转置|
|8|逆时针旋转 90°|
- 返回值:一个代表转换后图像的 Bitmap 对象。
##### - 人脸检测
```
public static native List
faceDetection(Bitmap var0, FaceDetectionParam var1);
```
参数
- `var0`:Bitmap 图像。
- `var1`:人脸检测参数
```
public class FaceDetectionParam {
public boolean check_liveness = false;
public int check_liveness_level = 0; // 0: more accurate model, 1: lighter model
}
```
- 返回值:一个代表检测到的人脸的 FaceBox 对象列表。
```
public class FaceBox {
public int x1;
public int y1;
public int x2;
public int y2;
public float liveness;
public float yaw;
public float roll;
public float pitch;
}
```
##### - 提取人脸特征
```
public static native byte[] templateExtraction(Bitmap var0, FaceBox var1);
```
参数
- `var0`:Bitmap 图像。
- `var1`:检测到的人脸的边界框 (`FaceBox`)。
- 返回值:一个代表从人脸中提取的模板(template)的字节数组。
##### - 计算两个人脸特征之间的相似度
```
public static native float similarityCalculation(byte[] var0, byte[] var1);
```
参数
- `var0`:代表第一个人脸模板的字节数组。
- `var1`:代表第二个人脸模板的字节数组。
- 返回值:一个代表两个人脸模板之间相似度分数的浮点值。
##
支持
如有任何问题、疑问或功能请求,请联系我们的支持团队。
标签:1:N 人脸搜索, Android SDK, Caido项目解析, Face Liveness, Face Matching, JS文件枚举, Kotlin, NIST FRVT, UML, 人脸姿态估计, 人脸检测, 人脸比对, 人脸活体检测, 人脸识别, 人脸防伪, 反欺诈, 安防监控, 智慧金融, 深度学习, 生物识别, 移动端开发, 考勤系统, 计算机视觉, 边境管控