# 人脸检测器

## **1. 接口简介** <br>

人脸检测器会对输入的彩色图片或者灰度图像进行人脸检测，并返回所有检测到的人脸位置。<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 SeetaFaceInfo**<br>

|名称 | 类型 | 说明|
|---|---|---|
|pos|SeetaRect|人脸位置|
|score|float|人脸置信分数|

### **2.4 struct SeetaFaceInfoArray**<br>

|名称 | 类型 | 说明|
|---|---|---|
|data|const SeetaFaceInfo*|人脸信息数组|
|size|int|人脸信息数组长度|

## 3 class FaceDetector

人脸检测器。

### 3.1 Enum SeetaDevice

模型运行的计算设备。<br>

|名称 |说明|
|---|---|
|SEETA_DEVICE_AUTO|自动检测，会优先使用 GPU|
|SEETA_DEVICE_CPU|使用CPU计算|
|SEETA_DEVICE_GPU|使用GPU计算|

### 3.2 struct SeetaModelSetting

构造人脸检测器需要传入的结构体参数。<br>

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|model|const char**| |检测器模型|
|id|int| |GPU id|
|device|SeetaDevice|AUTO |计算设备(CPU 或者 GPU)|

### 3.3 构造函数

#### FaceDetector

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|setting|const SeetaModelSetting&| |检测器结构参数|

### 3.4 成员函数

#### detect

输入彩色图像，检测其中的人脸。<br>

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|image|const SeetaImageData&| |输入的图像数据|
|返回值|SeetaFaceInfoArray| |人脸信息数组|

#### set
设置人脸检测器相关属性值。其中<br>
**PROPERTY_MIN_FACE_SIZE**: 表示人脸检测器可以检测到的最小人脸，该值越小，支持检测到的人脸尺寸越小，检测速度越慢，默认值为20；<br>
**PROPERTY_THRESHOLD**:
表示人脸检测器过滤阈值，默认为 0.90；<br>
**PROPERTY_MAX_IMAGE_WIDTH** 和 **PROPERTY_MAX_IMAGE_HEIGHT**:
分别表示支持输入的图像的最大宽度和高度；<br>
**PROPERTY_NUMBER_THREADS**: 
表示人脸检测器计算线程数，默认为 4.

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|property|Property||人脸检测器属性类别|
|value|double||设置的属性值|
|返回值|void| | | |

#### get
获取人脸检测器相关属性值。<br>

|参数 | 类型 |缺省值|说明|
|---|---|---|---|
|property|Property||人脸检测器属性类别|
|返回值|double||对应的人脸属性值|



