springboot 实现百度AI人脸识别对比

1,084 阅读1分钟

springboot 实现百度AI人脸识别对比

第一步首先前端

因为我们使用的前后台分离的框架,所以,前台只要实现vue的视频拍照,然后将拍的照片获取到,base64位形式传递给后台接口即可 前端的代码可以参考 blog.csdn.net/weixin_4364…

第二步后台实现

先引入百度api的sdk

    <dependency>
        <groupId>com.baidu.aip</groupId>
        <artifactId>java-sdk</artifactId>
        <version>4.15.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

工具类

image.png

获取图片数据,跟数据库先用的图片进行对比(提前要把用户的照片数据录入,后期拍照对比)

 /**
     * 人脸识别
     * FileUtil,Base64Util,HttpUtil,GsonUtils请从
     * https://ai.baidu.com/file/658A35ABAB2D404FBF903F64D47C1F72
     * https://ai.baidu.com/file/C8D81F3301E24D2892968F09AE1AD6E2
     * https://ai.baidu.com/file/544D677F5D4E4F17B4122FBD60DB82B3
     * https://ai.baidu.com/file/470B3ACCA3FE43788B5A963BF0B625F3
     * 下载
     */
    @PostMapping("/faceMatch")
    public  RestResponse faceMatch(@RequestBody Sign sign) {

        HashMap map=new HashMap();


        if(StringUtils.isBlank(sign.getCode()))
        {
         return  RestResponse.fail(2,"身份证号不能为空");
        }
        Sign sign1=userService.selectSign(sign.getCode());
        if(sign1==null)
        {
            return  RestResponse.fail(2,"您今日还未签到,请先签到再考试");
        }
        User user=userService.getUserByCode(sign.getCode());
        if(user==null)
        {
            return  RestResponse.fail(2,"您没有在考试系统中,请先加入班级再考试");
        }
        Face oface=new Face();
        oface.setFace_type("LIVE");
        oface.setImage_type("BASE64");
        oface.setQuality_control("LOW");
        oface.setLiveness_control("HIGH");
        oface.setImage(sign1.getTavar());
        //前台传递的
        Face nface =new Face();
        nface.setImage(sign.getImg());
        nface.setFace_type("LIVE");
        nface.setImage_type("BASE64");
        nface.setQuality_control("LOW");
        nface.setLiveness_control("HIGH");

        MatchRequest req1 = new MatchRequest(oface.getImage(), oface.getImage_type());
        MatchRequest req2 = new MatchRequest(nface.getImage(), nface.getImage_type());
        ArrayList<MatchRequest> requests = new ArrayList<MatchRequest>();
        requests.add(req1);
        requests.add(req2);
        JSONObject res = FaceUtil.getClient().match(requests);
        String flg=res.getString("error_msg");
        if(flg.equals("SUCCESS"))
        {
          JSONObject  r=res.getJSONObject("result");
          double score=r.getDouble("score");
          if(score>70)
          {
              return RestResponse.ok(user);
          }else
          {
              return  RestResponse.fail(2,"人脸识别失败");
          }
        }else
        {
            return RestResponse.fail(2,"人脸识别失败");
        }
    }

以上就是基本实现百度AI人脸识别对比了