微信小程序之人脸检测

在学习人脸检测的过程中,具体操作的每个步骤都要先列出来。第一步需要在人脸数据库里添加一张经检测是否是人脸(怎么检测很重要)的照片。第二部是运用微信小程序里的camera组件检测是否是本人。

 这就两大步都要具体在分小步骤做。

一大步骤

1.把图片下载到开发者服务器文件里并且添加到人脸数据库里。

(首先实现下载到本地文件里你可以用固定的一张图片路径测试,之后运用thinkphp框架里的上传文件知识,把测试的图片上传到本地文件里。如果上传成功,则获取上传文件的信息)

会不会疑惑怎么把测试的图片下载到本地文件里?在tp框架里前台用到了 选择文件。但在微信小程序里利用weui-wxss-master(weui样式)样式和wx.uploadFile()将本地资源上传到开发者服务器里。

问题又来了,上传文件到开发者服务器里之后,跟添加到人脸数据库有什么联系?

添加人脸数据库这个库我用的是百度云人脸数据库,所以查看百度云技术文档(安装人脸识别php sdk3) 例如下图。具体代码也在下面。

微信小程序之人脸检测_第1张图片

利用上面的方法,先用固定一张照片测试。

怎么检测很重要!!!!

调用aipface.php文件里的方法,

  $client = new \AipFace($APP_ID, $API_KEY, $SECRET_KEY);返回的是一个数组,里面有很多键值。根据键值判断是否是人脸。
  $addUser =  $client->addUser($image, $imageType, $groupId, $userId, $options);添加到人脸数据库里。

public function facevalid(){
      $file = './Uploads/2018-05-17/1.jpg';
      if (!file_exists($file)) {
         die('文件不存在');
      }
     //APP_PATH是从你文件开始的路径
      $dir = APP_PATH .'/face-sdk/';
      require_once $dir . 'AipFace.php';
      $APP_ID = '';(这三个参数都是人脸数据库里的值)
      $API_KEY = '';
      $SECRET_KEY = '';
      //因没有命名空间所以加个\
      $client = new \AipFace($APP_ID, $API_KEY, $SECRET_KEY);
    // 取决于image_type参数,传入BASE64字符串
      $image = file_get_contents($file);
      $image = base64_encode($image);
      // echo $image;
      $imageType = "BASE64";
       // 如果有可选参数
      $options = array();
      // $options["face_field"] = "age";
      $options["max_face_num"] = 10;
      // $options["face_type"] = "LIVE";
      // 调用人脸检测(输出数组)
      // $ret = $client->detect($image, $imageType);
      // print_r($ret);
      // 带参数调用人脸检测
      $ret = $client->detect($image, $imageType, $options);
      // print_r($ret);
      //是不是人脸
      $code = $ret['error_code'];
      // print_r($code);
      if($code===0){
        //在检测是不是一个人
         $face_num = $ret['result']['face_num'];
         // echo $face_num;
         $face_list = $ret['result']['face_list'];
         // print_r($face_list);
         $face_probability = $face_list[0]['face_probability'];
         // echo $face_probability;
         //还有一个条件是relocation=0是角度是90度(判断是不是一个人的脸)
            if ($face_num===1 && $face_probability===1) {
               //  echo 'shi';
               $groupId = 'user_group_id';
               $user = guid();
               // echo $userId;
               $userid = str_replace("{","",$user);
               $userId =str_replace("}","",$userid);
               $userId = str_replace("-","_",$userId);
               // echo $userId;
               $addUser =  $client->addUser($image, $imageType, $groupId, $userId, $options);
              // print_r($addUser);
               $ret = $addUser['error_code'];
              // echo $ret;

             }else{
                    echo '不是一个人的脸有可能图片有你的朋友或者亲人哦!';
                  }

       }else{
             // echo '不是人脸';
      }
      
      
 }

二大步骤

运用微信小程序里的camera组件。

微信小程序之人脸检测_第2张图片


根据微信里给出具体例子。利用其中的代码就可以得到一个字符串,tempImagePath。

微信小程序之人脸检测_第3张图片

之后的步骤跟之前一样。也是要先把图片上传到本地文件里(得到$image),再调用aipface.php文件里检测人脸的接口,就可以了。


你可能感兴趣的:(微信小程序开发)