113 lines
3.2 KiB
Markdown
113 lines
3.2 KiB
Markdown
# 人脸特征点检测器
|
||
|
||
## **1. 接口简介** <br>
|
||
|
||
人脸特征点检测器要求输入原始图像数据和人脸位置,返回人脸 5 个或者其他数量的的特征点的坐标(特征点的数量和加载的模型有关)。<br>
|
||
|
||
## **2. 类型说明**<br>
|
||
|
||
### **2.1 struct SeetaImageData**<br>
|
||
|
||
|名称 | 类型 | 说明|
|
||
|---|---|---|
|
||
|data|unit8_t* |图像数据|
|
||
|width | int32_t | 图像的宽度|
|
||
|height | int32_t | 图像的高度|
|
||
|channels | int32_t | 图像的通道数|
|
||
说明:存储彩色(三通道)或灰度(单通道)图像,像素连续存储,行优先,采用 BGR888 格式存放彩色图像,单字节灰度值存放灰度图像。
|
||
|
||
### **2.2 struct SeetaRect**<br>
|
||
|
||
|名称 | 类型 | 说明|
|
||
|---|---|---|
|
||
|x|int32_t |人脸区域左上角横坐标|
|
||
|y| int32_t | 人脸区域左上角纵坐标|
|
||
|width| int32_t | 人脸区域宽度|
|
||
|height| int32_t | 人脸区域高度|
|
||
|
||
### **2.3 struct SeetaPointF**<br>
|
||
|
||
|名称 | 类型 | 说明|
|
||
|---|---|---|
|
||
|x|double|人脸特征点横坐标|
|
||
|y|double|人脸特征点纵坐标|
|
||
|
||
## 3 class FaceLandmarker
|
||
|
||
人脸特征点检测器。
|
||
|
||
### 3.1 Enum SeetaDevice
|
||
|
||
模型运行的计算设备。
|
||
|
||
|名称 |说明|
|
||
|---|---|
|
||
|SEETA_DEVICE_AUTO|自动检测,会优先使用 GPU|
|
||
|SEETA_DEVICE_CPU|使用CPU计算|
|
||
|SEETA_DEVICE_GPU|使用GPU计算|
|
||
|
||
### 3.2 struct SeetaModelSetting
|
||
|
||
构造人脸特征点检测器需要传入的结构体参数。
|
||
|
||
|参数 | 类型 |缺省值|说明|
|
||
|---|---|---|---|
|
||
|model|const char**| |检测器模型|
|
||
|id|int| |GPU id|
|
||
|device|SeetaDevice|AUTO |计算设备(CPU 或者 GPU)|
|
||
|
||
### 3.3 构造函数
|
||
|
||
#### FaceLandmarker
|
||
|
||
|参数 | 类型 |缺省值|说明|
|
||
|---|---|---|---|
|
||
|setting|const SeetaModelSetting&| |检测器结构参数|
|
||
|
||
### 3.4 成员函数
|
||
|
||
#### number
|
||
获取模型对应的特征点数组长度。
|
||
|
||
|参数 | 类型 |缺省值|说明|
|
||
|---|---|---|---|
|
||
|返回值|int| |模型特征点数组长度|
|
||
|
||
#### mark
|
||
获取人脸特征点。
|
||
|
||
|参数 | 类型 |缺省值|说明|
|
||
|---|---|---|---|
|
||
|image|const SeetaImageData&| |图像原始数据|
|
||
|face|const SeetaRect&| |人脸位置|
|
||
|points|SeetaPointF*| |获取的人脸特征点数组(需预分配好数组长度,长度为number()返回的值)|
|
||
|返回值|void| | |
|
||
|
||
#### mark
|
||
获取人脸特征点和遮挡信息。
|
||
|
||
|参数 | 类型 |缺省值|说明|
|
||
|---|---|---|---|
|
||
|image|const SeetaImageData&| |图像原始数据|
|
||
|face|const SeetaRect&| |人脸位置|
|
||
|points|SeetaPointF*| |获取的人脸特征点数组(需预分配好数组长度,长度为number()返回的值)|
|
||
|mask|int32_t*| |获取人脸特征点位置对应的遮挡信息数组(需预分配好数组长度,长度为number()返回的值), 其中值为1表示被遮挡,0表示未被遮挡|
|
||
|返回值|void| | |
|
||
|
||
#### mark
|
||
获取人脸特征点。
|
||
|
||
|参数 | 类型 |缺省值|说明|
|
||
|---|---|---|---|
|
||
|image|const SeetaImageData&| |图像原始数据|
|
||
|face|const SeetaRect&| |人脸位置|
|
||
|返回值|std::vector<SeetaPointF>| |获取的人脸特征点数组 |
|
||
|
||
#### mark_v2
|
||
获取人脸特征点和遮挡信息。
|
||
|
||
|参数 | 类型 |缺省值|说明|
|
||
|---|---|---|---|
|
||
|image|const SeetaImageData&| |图像原始数据|
|
||
|face|const SeetaRect&| |人脸位置|
|
||
|返回值|std::vector<PointWithMask>| |获取人脸特征点和是否遮挡数组| |