FaceService.php 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. namespace App\Services\Vendor\BaiduAi;
  3. use App\Services\Service;
  4. class FaceService extends Service
  5. {
  6. /** @var ApiBase $base */
  7. protected $base;
  8. /**
  9. * 人脸检测 detect api url
  10. * @var string
  11. */
  12. private $detectUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/detect';
  13. /**
  14. * 人脸比对 match api url
  15. * @var string
  16. */
  17. private $matchUrl = "https://aip.baidubce.com/rest/2.0/face/v3/match";
  18. /**
  19. * 在线活体检测 faceverify api url
  20. * @var string
  21. */
  22. private $faceverifyUrl = 'https://aip.baidubce.com/rest/2.0/face/v3/faceverify';
  23. public function __construct()
  24. {
  25. $this->base = new ApiBase(
  26. config('baidu.face.appid'),
  27. config('baidu.face.apikey'),
  28. config('baidu.face.secretKey')
  29. );
  30. }
  31. /**
  32. * 人脸检测接口
  33. *
  34. * @param string $image - 图片信息(**总数据大小应小于10M**),图片上传方式根据image_type来判断
  35. * @param string $imageType - 图片类型 **BASE64**:图片的base64值,base64编码后的图片数据,需urlencode,编码后的图片大小不超过2M;**URL**:图片的 URL地址( 可能由于网络等原因导致下载图片时间过长)**;FACE_TOKEN**: 人脸图片的唯一标识,调用人脸检测接口时,会为每个人脸图片赋予一个唯一的FACE_TOKEN,同一张图片多次检测得到的FACE_TOKEN是同一个
  36. * @param array $options - 可选参数对象,key: value都为string类型
  37. * @description options列表:
  38. * face_field 包括**age,beauty,expression,faceshape,gender,glasses,landmark,race,quality,facetype,parsing信息** <br> 逗号分隔. 默认只返回face_token、人脸框、概率和旋转角度
  39. * max_face_num 最多处理人脸的数目,默认值为1,仅检测图片中面积最大的那个人脸;**最大值10**,检测图片中面积最大的几张人脸。
  40. * face_type 人脸的类型 **LIVE**表示生活照:通常为手机、相机拍摄的人像图片、或从网络获取的人像图片等**IDCARD**表示身份证芯片照:二代身份证内置芯片中的人像照片 **WATERMARK**表示带水印证件照:一般为带水印的小图,如公安网小图 **CERT**表示证件照片:如拍摄的身份证、工卡、护照、学生证等证件图片 默认**LIVE**
  41. * @return array
  42. */
  43. public function detect($image, $imageType, $options = array())
  44. {
  45. $data = array();
  46. $data['image'] = $image;
  47. $data['image_type'] = $imageType;
  48. $data = array_merge($data, $options);
  49. return $this->base->request($this->detectUrl, json_encode($data), array(
  50. 'Content-Type' => 'application/json',
  51. ));
  52. }
  53. /**
  54. * 人脸比对接口
  55. *
  56. * @param array $images
  57. * @return array
  58. */
  59. public function match($images)
  60. {
  61. return $this->base->request($this->matchUrl, json_encode($images), array(
  62. 'Content-Type' => 'application/json',
  63. ));
  64. }
  65. /**
  66. * 在线活体检测接口
  67. *
  68. * @param array $images
  69. * @return array
  70. */
  71. public function faceverify($images)
  72. {
  73. return $this->base->request($this->faceverifyUrl, json_encode($images), array(
  74. 'Content-Type' => 'application/json',
  75. ));
  76. }
  77. }