> For the complete documentation index, see [llms.txt](https://doc.crisen.org/ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.crisen.org/ai/baidu/face/faceset.md).

# 人脸库管理

```
$config = [
     'app_id' => 'your appid',
     'api_key' => 'your api key',
     'secret_key' => 'your secret key'
];
$ai = AI::baidu($config);
```

> 特别说明: 在下文中的所有$ai变量都表示当前的百度AI实例

## 人脸注册

人脸注册的路由为facesetUser()

```
// 注册url形式的图片
$imgUrl = 'http://domain/someimg.jpg';
$group = 'some_group'; //百度ai人脸库必选参数
$user = 'some_user';
$ai->facesetUser()->url($imgUrl)->group($group)->user($user)->add();

//注册base64编码后的图片
$code = 'Y3Jpc2VuY2hvdQ==';
$ai->facesetUser()->base64($code)->group($group)->user($user)->add();

// 注册本地文件
$path = 'path/to/someimg.jpg';
$ai->facesetUser()->path($path)->group($group)->user($user)->add();

// 使用可选参数
$ai->facesetUser()->path($path)->group($group)->user($user)->add([
    'user_info'       => 'user info',
    'quality_control' => 'NONE',
    'liveness'        => 'NONE'
]);
```

## 人脸更新

人脸更新的路由为facesetUser()

```
// 以图片base64编码进行更新
$code = 'Y3Jpc2VuY2hvdQ==';
$ai->facesetUser()->base64($code)->group($group)->user($user)->update();

// 以图片url进行更新
$ai->facesetUser()
    ->url('http://domain/some.jpg')
    ->group($group)
    ->user($user)
    ->update();

// 以图片路径进行更新
$ai->facesetUser()
    ->path('path/ti/some.jpg')
    ->group($group)
    ->user($user)
    ->update();

// 以face_token 进行更新
$ai->facesetUser()->faceToken('facetoken')->group($group)->user($user)->update();

// 兼容官方可选参数
$ai->facesetUser()
    ->path('path/ti/some.jpg')
    ->group($group)
    ->user($user)
    ->update([
        'user_info'       => 'user info',
        'quality_control' => 'NONE',
        'liveness'        => 'NONE'
    ]);
```

## 人脸删除

> 人脸删除的路由是faceset 和人脸注册的不一致

```
$group = 'some_group';
$user  = 'some_user';
$faceToken = 'face_token'; // 人脸注册时 返回的图片唯一标志 是人脸删除的必选参数
$res = $ai->faceset()->group($group)->user($user)->faceToken($faceToken )->delete();
if($res->success()){
    //do something
}
```

## 用户信息查询

```
// 查询特定group的信息
$ai->facesetUser()->user('some_user')->group('some_group')->get();

// 查询所有group的信息
$ai->facesetUser()->group()->user('some_user')->get();
```

## 获取用户人脸列表

用于获取一个用户的全部人脸列表

```
// 获取全部列表
$res = $ai->faceset()->group('some_group')->user('some_user')->get();

//获取部分列表
$res = $ai->faceset()
    ->group('some_group')
    ->user('some_user')
    ->get([
        'start'  => '0',
        'length' => '1000'
    ]);

// 接收返回数据
if($res->success()){
    var_dump($res->toArray());
}
```

## 获取用户列表

用于查询指定用户组中的用户列表。

```
$res = $ai->facesetGroup()->group('some_group')->users();
if($res->success()){
    var_dump($res->toArray());
}
```

## 复制用户

用于将已经存在于人脸库中的用户**复制到一个新的组**

```
$res = $ai->facesetUser()->user()->copy($src, $dest);
if($res->success()){
    // do something
}
```

## 删除用户

用于将用户从某个组中删除

```
//删除某个组的用户
$ai->facesetUser()->user('some_user')->group('some_group')->delete();

//删除所有组的用户
$ai->facesetUser()->user('some_user')->group()->delete();
```

## 创建用户组

用于创建一个空的用户组，如果用户组已存在 则返回错误

```
$res = $ai->facesetGroup()->group('other_group')->add();
if($res->success()){
    // create group successful
}
```

## 删除用户组

删除用户组下所有的用户及人脸，如果组不存在 则返回错误

> 注：组内的人脸数量如果大于500条，会在后台异步进行删除。在删除期间，无法向该组中添加人脸。1秒钟可以删除20条记录，相当于一小时可以将7万人的人脸组删除干净。

```
$ai->facesetGroup()->group('some_group')->delete();
```

## 组列表查询

```
//查询所有信息
$res = $ai->facesetGroup()->get();

//查询部分信息
$res = $ai->facesetGroup()->get([
    'start' => 0,
    'length' => 100,
]);

if($res->success()){
    var_dump($res->toArray());
}
```
