百度AIP:Springboot人脸对比

目录

一、简述

二、依赖

三、代码步骤

[3.1 实体注入](#3.1 实体注入)

[3.2 服务实现](#3.2 服务实现)

[3.3 其它实现](#3.3 其它实现)

四、小结


欢迎来到 盹猫(>^ω^<)的博客

本篇文章主要介绍了

**百度AIP:Springboot人脸对比**

❤博主广交技术好友,喜欢文章的可以关注一下❤

一、简述

人脸识别在日常生活中是非常常见的功能,它大量的应用于APP的认证(实名认证)、验证(手机识别开锁),本篇文章是通过百度人脸识别(AIP)实现人脸对比或实名认证的实现步骤,通过Springboot+SDK的方式实现,实现人脸1:1对比接口实现人脸和活体检测,接口功能是免费的(但有次数限制)。

二、依赖

调用百度AIP接口,我们需要使用以下依赖进行在线导入,也可以使用jar包的方式进行导入(记得在打包时包含本地依赖路径)

XML 复制代码
<dependency>
   <groupId>com.baidu.aip</groupId>
   <artifactId>java-sdk</artifactId>
   <version>4.16.19</version>
</dependency>

三、代码步骤

3.1 实体注入

SDK中提供了一个AipFace客户端,用于快捷的调用人脸识别相关接口,所以首先需要将AipFace交给Spring管理,其实就是Bean的注入,代码如下:

java 复制代码
package com.uav.config;

import com.baidu.aip.face.AipFace;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class BaiduFaceConfig {

    @Value("${baidu.face_app_id}")
    private String APP_ID;

    @Value("${baidu.face_api_key}")
    private String API_KEY;

    @Value("${baidu.face_secret_key}")
    private String SECRET_KEY;

    @Bean
    public AipFace aipFaceClient() {
        AipFace client = new AipFace(APP_ID, API_KEY, SECRET_KEY);
        // 可选:设置网络连接参数
        client.setConnectionTimeoutInMillis(2000);
        client.setSocketTimeoutInMillis(60000);
        return  client;
    }


}

这里的APP_ID、API_KEY、SECRET_KEY使用的是在百度AIP中创建的应用的相关配置,如果没有可以在创建API应用 该链接下进行创建。

注:这里创建的应用只是AIP功能的应用,和其它功能的KEY不能通用。

3.2 服务实现

java 复制代码
//matchImg: 匹配人脸图片
//idCardFront: 身份证证明图片
@Override
public void checkFace(String matchImg, String idCardFront) {
  MatchRequest matchRequest = new MatchRequest(matchImg, "BASE64");
  MatchRequest idCardRequest = new MatchRequest(idCardFront, "BASE64");
  ArrayList<MatchRequest> requests = new ArrayList<>();
  requests.add(matchRequest);
  requests.add(idCardRequest);
  org.json.JSONObject object = aipFace.match(requests);
        log.info("人脸识别接口返回结果:"+object.toString());
        if (object.getInt("error_code")!=0) {
            throw new SysException("人脸识别失败,请稍后再试!");
        }
        double score = object.getJSONObject("result").getDouble("score");
        if (score < FACE_MATCH_THRESHOLD) {
                throw new SysException("人脸识别失败,请上传清晰的照片!");
   }
}

在该服务中,将接收到的Base64字符串的图片信息通过aipFace.match进行比较,将返回的结果分数进行比较,官方推荐的分数为80分,然后将识别结果返回。

3.3 其它实现

对上述实现的人脸对比功能进行扩展可实现如人脸验证、实名认证等功能,如这里作为实名认证的代码如下:

java 复制代码
   /**
     * 认证用户信息
     * @param certificationRequestDTO 认证信息
     */
    @Override
    public void authUserCertification(CertificationRequestDTO certificationRequestDTO) {
        checkUserAuthStatus(certificationRequestDTO);
        //人脸对比检测
        checkFace(certificationRequestDTO.getMatchImg(),certificationRequestDTO.getIdCardFront());
        //添加认证信息到数据库
        try {
            //TODO 这里是身份证照片
            byte[] imageBytes = Base64.decodeBase64(certificationRequestDTO.getIdCardFront());
            String url = OSSFactory.build().uploadSuffix(imageBytes, "jpg");
            certificationRequestDTO.setIdCardFront(url);
        }catch (Exception e){
            throw new SysException("图片上传失败,请稍后再试!");
        }
        addCertification(certificationRequestDTO);
    }

上述代码按照【检查实名状态】->【人脸对比】->【上传身份证照片】->【保存到数据库】的流程可以实现比较完整的实名认证流程。

注:上述代码为图片对比,按照严格流程应该做权威库(如公安数据)的比较,才能实现严格的实名认证流程。

四、小结

本文通过SpringBoot+百度AIP SDK实现了高效的人脸识别功能,其特点包括:

  • ​快速集成​:10行代码完成核心验证
  • ​低成本​:免费额度满足初期需求
  • ​可扩展​:可无缝升级至企业级方案

​​适用项目​​:社交APP实名认证、智能门禁系统、金融开户验证等需要生物识别的场景。


如果你对区块链 内容感兴趣可以查看我的专栏:小试牛刀-区块链

感谢您的关注和收藏!!!!!!

相关推荐
夜之眷属17 小时前
服务启动即崩:InetAddress.getLocalHost() 抛 UnknownHostException 排查记
java·运维·后端·docker
IT研究室17 小时前
最新计算机毕业设计选题推荐-基于spring boot的食品安全信息管理系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
金銀銅鐵17 小时前
[Java] 用GUI展示class文件顶层的 access_flags
后端·python·ai编程
kimnoic18 小时前
Python操作xlwings的实例详解
开发语言·python
2601_9578838418 小时前
2026年10月 外星人笔记本维修须知
python·电脑
泡茶喝茶写代码18 小时前
A股量化数据工程:从 REST 接口到策略信号(第 17 篇):创新高与新低扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
IT_陈寒18 小时前
Vue的数组更新把我坑惨了
前端·人工智能·后端
VIP_CQCRE18 小时前
用 Ace Data Cloud 接入 OpenAI 兼容语音转文字:一份能直接运行的 API 指南
python·openai·api·语音识别·acedatacloud
高晶18 小时前
Android 智能语音开发新手入门实战
后端·程序员