以下是用到的关于人脸识别的两个接口,还有用thinkphp如何人脸注册入库的代码,代码如下:
人脸检测接口
@param string $image - 图片信息(**总数据大小应小于10M**),图片上传方式根据image_type来判断
@param string $imageType - 图片类型 **BASE64**:图片的base64值,base64编码后的图片数据,需urlencode,编码后的图片大小不超过2M;**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长)**;FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个
@param array $options - 可选参数对象,key: value都为string类型
@description options列表:
face_field 包括**age,beauty,expression,faceshape,gender,glasses,landmark,race,quality,facetype,parsing信息** <br> 逗号分隔. 默认只返回face_token、人脸框、概率和旋转角度
max_face_num 最多处理人脸的数目,默认值为1,仅检测图片中面积最大的那个人脸;**最大值10**,检测图片中面积最大的几张人脸。
face_type 人脸的类型 **LIVE**表示生活照:通常为手机、相机拍摄的人像图片、或从网络获取的人像图片等**IDCARD**表示身份证芯片照:二代身份证内置芯片中的人像照片 **WATERMARK**表示带水印证件照:一般为带水印的小图,如公安网小图 **CERT**表示证件照片:如拍摄的身份证、工卡、护照、学生证等证件图片 默认**LIVE**
@return array
/
public function detect($image, $imageType, $options=array()){
$data = array();
$data['image'] = $image;
$data['image_type'] = $imageType;
$data = array_merge($data, $options);
return $this->request($this->detectUrl, json_encode($data), array(
'Content-Type' => 'application/json',
));
}
人脸注册接口
@param string $image - 图片信息(**总数据大小应小于10M**),图片上传方式根据image_type来判断
@param string $imageType - 图片类型 **BASE64**:图片的base64值,base64编码后的图片数据,需urlencode,编码后的图片大小不超过2M;**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长)**;FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个
@param string $groupId - 用户组id(由数字、字母、下划线组成),长度限制128B
@param string $userId - 用户id(由数字、字母、下划线组成),长度限制128B
@param array $options - 可选参数对象,key: value都为string类型
@description options列表:
user_info 用户资料,长度限制256B
quality_control 图片质量控制 **NONE**: 不进行控制 **LOW**:较低的质量要求 **NORMAL**: 一般的质量要求 **HIGH**: 较高的质量要求 **默认 NONE**
liveness_control 活体检测控制 **NONE**: 不进行控制 **LOW**:较低的活体要求(高通过率 低攻击拒绝率) NORMAL**: 一般的活体要求(平衡的攻击拒绝率, 通过率) **HIGH**: 较高的活体要求(高攻击拒绝率 低通过率) **默认NONE**
@return array
/
public function addUser($image, $imageType, $groupId, $userId, $options=array()){
$data = array();
$data['image'] = $image;
$data['image_type'] = $imageType;
$data['group_id'] = $groupId;
$data['user_id'] = $userId;
$data = array_merge($data, $options);
return $this->request($this->userAddUrl, json_encode($data), array(
'Content-Type' => 'application/json',
));
}
人脸注册入库
public function upload($id=''){
if(empty($id)){
return false;
}
$no = M('student')->where("id={$id}")->getField('no');
$dir = "./Uploads/studentface/";
if(!file_exists($dir)){
mkdir($dir,0700,true);
}
$upload = new \Think\Upload();// 实例化上传类
$upload->maxSize = 2048000 ;// 设置附件上传大小
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');
// 设置附件上传类型
$upload->rootPath = $dir; // 设置附件上传根目录
$upload->savePath = ''; // 设置附件上传(子)目录
$upload->saveName=$no;
$upload->replace = true;
$upload->autoSub = false;
$info = $upload->uploadOne($_FILES['file']);
if(!$info){
echo json_encode(array('error'=>true,'msg'=>$upload->getError()),JSON_UNESCAPED_UNICODE);
}else{
$file = $dir . $info['savePath'].$info['saveName'];
$image = base64_encode(file_put_contents($file));
// $this->facevalid($no,$image);
$m=M('head');
$data = $m->where("no='{$no}'")->find();
if($data){
$m->where("n0='{$no}'")->save(array('base64'=>$image));
}else{
$m->add(array('no'=>$no,'base64'=>$image,'path'=>$file));
}
}
}