spring boot2 基于百度云apiface实现人脸检测与认证2

接上一篇,上篇只实现了人脸的认证,接下来实现人脸的检测。

原理介绍:

把摄像头抓拍的图像上传到服务器,服务器把图像上传到百度云,百度云返回识别出的人脸的数量和位置,前端根据服务端的返回,在图像中画出人脸的位置。

 

主要代码:

前端:

function face_check(){
        context.drawImage(video, 0, 0, 200, 150);
        jQuery.post('faceCheck', {           //指定发送图片到的servlet
            snapData: canvas.toDataURL('image/jpg')
        }).done(function(rs) {
            //对结果集进行解析,判断是否存在人脸
            console.log(JSON.stringify(rs));
            if(rs.error_code == "222202"){
                alert("没有人脸信息或人脸数量非1,请重新拍照!");
            }else if(rs.error_code == "222207"){
                alert("人脸库中没有您的注册信息,请先注册。");
            }else if(rs.error_code == "223120"){
                alert("请正确登录,不得伪造!");
            }else if(rs.error_msg == "SUCCESS"){
                context.strokeStyle = "#f00";
                var face_list = rs.result.face_list;
                console.dir(face_list);
                face_list.forEach(function (item,index,array) {
                    var location = item.location;
                    console.dir(location);
                    context.strokeRect(location.left,location.top,location.width,location.height); //在图片中标识出人脸的位置
                });
                alert("检测成功!");

            }
        });
    }

 

服务端:

    @ResponseBody
    @RequestMapping(value = "faceCheck",method = RequestMethod.POST)
    public Map faceCheck(@RequestParam("snapData") String data) throws Exception{
        //使用Ajax提交base64字符串,需要经过去头转码
        String img_data = data.substring(22, data.length());
        AipFace client = new AipFace(APP_ID_FACE, API_KEY_FACE, SECRET_KEY_FACE);

        JSONObject res = client.detect(img_data,"BASE64", new HashMap<String,String>());    //检测出人脸的位置
        System.out.println(res.toString(2));

        Map map = JSON.parseObject(res.toString());
        return map;
    }

 

posted @ 2019-02-18 12:26  二奎  阅读(298)  评论(0编辑  收藏  举报