人脸识别 人脸实名认证

首先:
注册百度云,并搜索人脸实名认证
在这里插入图片描述
第二步查看自己要请求的api
在这里插入图片描述

创建步骤:
在这里插入图片描述
添加一个人脸识别的人脸库
在这里插入图片描述
添加一个人脸用户组
在这里插入图片描述
添加一个人脸用户
在这里插入图片描述
给这个用户添加一张人像图
在这里插入图片描述

然后 渲染出 拍照页
前端:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>layui</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="/static/lib/layui-v2.5.4/css/layui.css" media="all">
    <link rel="stylesheet" href="/static/css/public.css" media="all">
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <style>
        *{
            margin: 0 auto;
            padding: 0;
        }
        button{
            width: 100px;
            height: 40px;
            background-color: black;
            color: white;
            border-radius: 10px;
        }
        #video{
            background-color: black;
            border-radius: 50%;
        }
        .layuimini-container{
            margin: 10%;
        }
    </style>
</head>
<body>
<div class="layuimini-container">
    <div align="center">
        <video id="video" width="300px" height="300px" autoplay></video>
        <canvas hidden="hidden" id="canvas" width="626" height="800"></canvas>
    </div>
    <div align="center">
        <button id="open">授权摄像头</button>
        <button id="close">关闭摄像头</button>
        <button id="CatchCode">人脸检测</button>
    </div>
</div>
<script src="/static/lib/layui-v2.5.4/layui.js" charset="utf-8"></script>
<script src="/static/js/wk.js" charset="utf-8"></script>
<script type="text/javascript">
    var video; //视频流对象
    var context; //绘制对象
    var canvas; //画布对象
    $(function () {
        var flag = false;
        //开启摄像头
        $("#open").click(function () {
            //判断摄像头是否打开
            if (!flag) {
                //调用摄像头初始化
                open();
                flag = true;
            }
        });
        //关闭摄像头
        $("#close").click(function () {
            //判断摄像头是否打开
            if (flag) {
                video.srcObject.getTracks()[0].stop();
                flag = false;
            }
        });
        //拍照
        $("#CatchCode").click(function () {
            if (flag) {
                context.drawImage(video, 0, 0, 330, 250);
                CatchCode();
            } else
                alert("请先开启摄像头!");
        });
    });

    //将当前图像传输到后台
    function CatchCode() {
        //获取图像
        var img = getBase64();
        //Ajax将Base64字符串传输到后台处理
        $.ajax({
            type: "POST",
            async: false,
            url: "{:url('faceVerify')}",
            data: {
                img: img,
            },
            dataType: "JSON",
            success: function (data) {
                console.log(data);return false;
                //返回的结果
                if (data.code == 0){
                    location.href = "{:url('paySuccess')}"
                }else {
                    location.href = "{:url('payFail')}"
                    return false;
                }
            }
        });
    };

    // 开启摄像头
    function open() {
        // 获取摄像头对象
        canvas = document.getElementById("canvas");
        context = canvas.getContext("2d");
        // 获取视频流
        video = document.getElementById("video");
        var videoObj = {
                "video": true
            },
            errBack = function (error) {
                console.log("Video capture error: ", error.code);
            };
        context.drawImage(video, 0, 0, 330, 250);

        if (navigator.getUserMedia || navigator.webkitGetUserMedia ||
            navigator.mozGetUserMedia) {
            navigator.getUserMedia = navigator.getUserMedia ||
                navigator.webkitGetUserMedia ||
                navigator.mozGetUserMedia;
            navigator.getUserMedia(videoObj, function (stream) {
                video.srcObject = stream;
                video.play();
            }, errBack);
        }
    }

    // 将摄像头拍取的图片转换为Base64格式字符串
    function getBase64() {
        // 获取当前图像并转换为Base64的字符串
        var imgSrc = canvas.toDataURL("image/png");
        // 截取字符串
        return imgSrc.substring(22);
    };
</script>
</body>
</html>

curl请求代码:

<?php
function request_post($url = '', $param = '') {
        if (empty($url) || empty($param)) {
            return false;
        }
        
        $postUrl = $url;
        $curlPost = $param;
        $curl = curl_init();//初始化curl
        curl_setopt($curl, CURLOPT_URL,$postUrl);//抓取指定网页
        curl_setopt($curl, CURLOPT_HEADER, 0);//设置header
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
        curl_setopt($curl, CURLOPT_POST, 1);//post提交方式
        curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
        $data = curl_exec($curl);//运行curl
        curl_close($curl);
        
        return $data;
    }
    
    /**
 * 发起http post请求(REST API), 并获取REST请求的结果
 * @param string $url
 * @param string $param
 * @return - http response body if succeeds, else false.
 */
function request_posts($url = '', $param = '')
{
    if (empty($url) || empty($param)) {
        return false;
    }

    $postUrl = $url;
    $curlPost = $param;
    // 初始化curl
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $postUrl);
    curl_setopt($curl, CURLOPT_HEADER, 0);
    // 要求结果为字符串且输出到屏幕上
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    // post提交方式
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $curlPost);
    // 运行curl
    $data = curl_exec($curl);
    curl_close($curl);

    return $data;
}

后端:
第一步:获取access_token

	 public function getToken(){
     $url = 'https://aip.baidubce.com/oauth/2.0/token';
    $post_data['grant_type'] = 'client_credentials';
    $post_data['client_id'] = '你创建应用给的ak';   // Api Key
    $post_data['client_secret'] = '你创建应用给的sk';    // Secret Key
    $o = "";
    foreach ($post_data as $k => $v) {
        $o .= "$k=" . urlencode($v) . "&";
    }
    $post_data = substr($o, 0, -1);
    $res = request_post($url, $post_data);
   $res = json_decode($res, true);
   print_r( $res);
   cache('token',$res['access_token']);
  
}

第二部:开始识别

 public function faceVerify(Request $request)
    {
        
        $token = cache('token');
        $url = 'https://aip.baidubce.com/rest/2.0/face/v3/search?access_token=' .$token;
        $image = $request->param('img');
        $bodys = "{
            \"image\":\"$image\",
            \"image_type\":\"BASE64\",
            \"group_id_list\":\"face\",
            \"quality_control\":\"LOW\",
            \"liveness_control\":\"NORMAL\"
        }";
        // print_r($bodys);die;
        $res = request_posts($url, $bodys);
       $req = json_decode($res,true);
       $userList = $req['result']['user_list'][0];
       print_r($userList);
    }

大功告成!!!!!!!!!!感谢观看~~

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值