微信开发之人脸检测入库

       微信开发人脸识别中,检测人脸功能需将人脸入库,并对上传的人脸进行分组管理。人脸入库时,选择合适的文件进行上传。

第一步:初始化人脸识别

首先获取APP_ID,APP_KEY和SECRET_KEY,并将其写成init_face()方法。

第二步:添加学生信息,包括no,name,sex,age等信息。添加出错时,提醒添加出错。

public function index($no,$name,$sex,$age){
    	$data['no']=$no;
    	$data['name']=$name;
    	$data['sex']=$sex;
    	$data['age']=$age;

    	$id=M('student')->add($data);
    	if($id){
            return $this->ajaxReturn(array('error'=>false,id=>$id));
    	}else{
    		 return $this->ajaxReturn(array('error'=>true,'msg'=>"添加出错"));
    	}
        
    }

第三步:文件上传。

 //文件上传
    public function upload($id=''){
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize = 3145728 ;// 设置附件上传大小
        $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
        $upload->rootPath = './Uploads/'; // 设置附件上传根目录
        $upload->savePath = ''; // 设置附件上传(子)目录
        // 上传文件
        $info = $upload->uploadOne($_FILES['file']);
        if(!$info) {// 上传错误提示错误信息
           return $this->ajaxReturn(array('error'=>true,'msg'=>$upload->getError()));
        }else{// 上传成功
           return $this->ajaxReturn(array('error'=>false,'msg'=>$info['savepath'].$info['savename'],'id'=>$id));
        }
    }

第四步:文件上传之后,获取小组名。将其组名命名为face _group。

 //获取小组
    private function face_group(){
        //组名
        $groupname='face_group';
        $client=$this->init_face();
        $ret=$client->getGroupList();
        if($ret['error_code']==0){
           $grouplist=$ret['result']['group_id_list'];
           if(in_array($groupname,$grouplist)){
            return $groupname;
           }else{
            $ret=$client->groupAdd($groupname);
            if($ret['error_code']==0){
                return $groupname;
            }else{
                return false;
            }
           }
        }else{
            return false;
        }
    }

第五步:人脸检测。首先上传文件,判断文件是否存在,如果不存在,提醒文件不存在。选择成功后,并将文件及进行编码

 $image=base64_encode(file_get_contents($file));

然后判断是否有人脸,人脸数量是否为1,可靠性是否为1。如果没有人脸,则提醒没有人脸,然后判断人脸数量,如果不为1,输出人脸数量大于1,然后判断其可靠性,如果可靠性为1,则提醒人脸检测完成,并已入库,如果不为1时,输出可靠性。

 //人脸检测
    public function facevalid(){
        // $token=access_token();
        // echo $token;

        $file='./Uploads/02.jpeg';
        if(!file_exists($file)){
            die('文件不存在');
        }

        $image=base64_encode(file_get_contents($file));
        //如果有可选参数
        $options=array();
        $options['max_face_num']=2;

        $client=$this->init_face();
        $ret=$client->detect($image,'BASE64',$options);
        // print_r($ret);

        if($ret['error_code']==0){ //有人脸
            $result=$ret['result'];
            $face_num=$result['face_num'];
            if(1==$face_num){ //人脸数量为1
                $face_probability=$result['face_list'][0]['face_probability'];
                if(1==$face_probability){ //可靠性为1
                    $guid=myguid();
                    $group=$this->face_group();

                    $client->addUser($image,'BASE64',$group,$guid);
                    echo "人脸检测完成,并已入库";

                }else{
                    die('可靠性为:'.$face_probability);
                }

            }else{
                die('人脸数量大于1');
            }
        }else{
            die('没有人脸');
        }
    } 

}
以上人脸入库的步骤。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值