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>
工具类
获取图片数据,跟数据库先用的图片进行对比(提前要把用户的照片数据录入,后期拍照对比)
/**
* 人脸识别
* 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人脸识别对比了