Java调用百度人脸识别

没有使用过百度的人脸识别接口之前,我以为这是一个很复杂的功能,但是尝试了之后,发现接口非常友好,使用起来相当简单。

记录一下使用的步骤如下:

一、准备环境

① 注册百度智能云的账号(https://login.bce.baidu.com/)

登录后在产品中找到人脸识别

 

 

 ② 进入人脸识别页面后,点击“创建应用”

 

 

 

应用创建完后,记录下AppID、API Key和Secret Key

 

 

 

二、后端接口

① 引入依赖

<dependency>
    <groupId>com.baidu.aip</groupId>
    <artifactId>java-sdk</artifactId>
    <version>4.16.3</version>
</dependency>

 

② 代码应用

复制代码
/**
 * 百度人脸服务的封装
 */
@Service
public class BaiduFaceServiceImpl implements BaiduFaceService {

    @Resource
    AipFace client;

    /**
     * 创建用户组 - 组 对标 工程
     * @param groupId 组id
     */
    @Override
    public void groupAdd(String groupId) {
        // 创建用户组
        JSONObject res = client.groupAdd(groupId, new HashMap<String, String>());
        System.out.println(res.toString(2));
    }

    /**
     * 人脸注册
     * @param userId 人员id
     * @param groupId 人员所在组
     * @param userName 人员名称
     * @param image 即将被注册的人脸图片
     * @return face_token 人脸图片的唯一标识
     */
    @Override
    public String faceSign(String userId, String groupId, String userName, String image) {
        HashMap<String, String> options = new HashMap<>(4);
        options.put("user_info", userName);
        options.put("quality_control", "NORMAL");
        options.put("liveness_control", "LOW");
        options.put("action_type", "APPEND");

        String imageType = "BASE64";

        // 人脸注册
        JSONObject res = client.addUser(image, imageType, groupId, userId, options);
        System.out.println(res.toString(2));
        String faceId = null;
        if (res.getInt("error_code")  == 0) {
            faceId = res.getJSONObject("result").getString("face_token");
        }
        return faceId;
    }

    /**
     * 人脸认证
     * @param userId 人员id
     * @param groupId 人员所在组
     * @param image 即将被核验的人脸图片
     */
    @Override
    public boolean faceSearch(Integer userId, String groupId, String image) {
        HashMap<String, String> options = new HashMap<>(6);
        options.put("max_face_num", "1");
        options.put("match_threshold", "80");
        options.put("quality_control", "NORMAL");
        options.put("liveness_control", "NORMAL");
        options.put("user_id", userId.toString());
        options.put("max_user_num", "1");

        String imageType = "BASE64";
        JSONObject res = client.search(image, imageType, groupId, options);
        int errCode = res.getInt("error_code");
        return errCode == 0;
    }

    /**
     *  人脸删除
     * @param userId 人员id
     * @param groupId 人员所在组
     * @param faceToken 人脸图片的唯一标识(人脸注册时会返回)
     */
    @Override
    public void faceUninstall(String userId, String groupId, String faceToken) {
        JSONObject res = client.faceDelete(userId, groupId, faceToken, new HashMap<String, String>());
        System.out.println(res.toString(2));
    }

    /**
     * 用户删除
     * @param userId 人员id
     * @param groupId 人员所在组
     */
    @Override
    public void userDelete(String userId, String groupId) {
        // 删除用户
        JSONObject res = client.deleteUser(groupId, userId, new HashMap<>());
    }

}
复制代码

ok 打完收工 简单记录一下 说的不对的 前辈们多多指教

 

posted @   bwqueen  阅读(795)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示