当前位置: 首页 > article >正文

Java实现人脸识别和指纹认证

我们在开发中经常会有人脸识别的需求,今天就实现一个简单的人脸识别,调用的第三方SDK服务

0.先去注册服务

登录网址 虹软视觉开放平台—以免费人脸识别技术为核心的人脸识别算法开放平台

点击进行注册 

进入之后新增我的服务

成功之后点击首页人脸识别添加服务 

之后填写如下信息

 下载sdk

 之后的话去拉项目(项目现在如果有的话不需要加,没有的话如下)

在IDEA直接拉版本控制即可:GitHub - chengxy-nds/ArcSoftFaceDemo: ArcSoft基于虹软人脸识别2.0 Java服务端Demo代码,最完整的服务端Demo。

(1)把包放到lib文件夹

(2)加载包

在xml加入以下配置

       <dependency>
            <groupId>com.arcsoft.face</groupId>
            <artifactId>arcsoft-sdk-face</artifactId>
            <version>2.2.0.1</version>
            <scope>system</scope>
            <systemPath>${basedir}/lib/arcsoft-sdk-face-2.2.0.1.jar</systemPath>
        </dependency>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <includeSystemScope>true</includeSystemScope>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>

 之后的话根据表生成sql脚本

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user_face_info
-- ----------------------------
DROP TABLE IF EXISTS `user_face_info`;
CREATE TABLE `user_face_info`  (
  `id` int(10) NOT NULL,
  `group_id` int(10) NULL DEFAULT NULL,
  `gace_id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `age` int(10) NULL DEFAULT NULL,
  `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `gender` smallint(10) NULL DEFAULT NULL,
  `phone_number` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `face_feature` blob NULL,
  `create_time` timestamp NULL DEFAULT NULL,
  `update_time` timestamp NULL DEFAULT NULL,
  `fpath` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;

-- ----------------------------
-- Records of user_face_info
-- ----------------------------

SET FOREIGN_KEY_CHECKS = 1;

执行生成表之后再项目application.properties修改数据库,用户名和密码

点击启动类运行

之后访问端口http://127.0.0.1:8089/demo就可以看到

如果出现Can't load library: d:/arcsoft_lib\libarcsoft_face.dll这个错误说明你的系统确实这个dll文件,添加即可

有两种一种是摄像头识别,另一种事照片识别,这样就可以实现人脸识别(开发环境使用第三方SDK比较方便)

接下来是指纹认证,这边只写了一个简单的模版实现指纹认证,如下

public class FingerprintVerification {

    // 模拟指纹模板
    private static final byte[] fingerprintTemplate1 = new byte[] { 1, 2, 3, 4, 4 };
    private static final byte[] fingerprintTemplate2 = new byte[] { 1, 2, 3, 4, 5 };

    // 设置比对阈值
    private static final int threshold = 3;

    public static void main(String[] args) {
        // 模拟指纹比对
        boolean isMatch = matchFingerprints(fingerprintTemplate1, fingerprintTemplate2);

        if (isMatch) {
            System.out.println("指纹匹配,认证通过");
        } else {
            System.out.println("指纹不匹配,认证失败");
        }
    }

    // 模拟指纹比对函数
    private static boolean matchFingerprints(byte[] template1, byte[] template2) {
        // 比对两个指纹模板,计算差异值
        int difference = calculateDifference(template1, template2);

        // 如果差异值低于阈值,认为指纹匹配
        return difference <= threshold;
    }

    // 模拟计算差异值函数
    private static int calculateDifference(byte[] template1, byte[] template2) {
        // 模拟计算两个指纹模板的差异值,实际情况下需要使用专业库或API
        int difference = 0;
        for (int i = 0; i < template1.length; i++) {
            difference += Math.abs(template1[i] - template2[i]);
        }
        return difference;
    }
}

结果如下

这样就可以了


http://www.kler.cn/a/105740.html

相关文章:

  • 【Java SE】PreparedStatement
  • 2024年11月19日Github流行趋势
  • 前端接入Paymax支付请求
  • 深入理解分页及 PageHelper 使用细节与注意事项
  • uni-app快速入门(十)--常用内置组件(下)
  • 计算机网络-mac地址与ip地址的区别总结
  • KVM虚拟化常见问题汇总
  • springcloud gateway转发后getServerName被更改的问题
  • 掌握CSS Flexbox,打造完美响应式布局,适配各种设备!
  • 【git命令】删除分支
  • docker服务CPU飙高排查
  • 基于STM32+OneNet设计的物联网智能鱼缸(2023升级版)
  • stable-diffusion-webui环境部署
  • uwb nlos(非视)研究-由一篇论文结合gpt深挖创新方法-拯救苦苦挣扎的研究生。
  • 浏览器是怎么执行JS的?——消息队列与事件循环
  • Visual Studio Professional 2019 软件安装教程(附安装包下载)
  • JVM——一些零散的概念(后续学习深入了再补充)
  • 【Linux】Centos yum源替换
  • 面试必考精华版Leetcode215. 数组中的第K个最大元素
  • 大促期间的窜货低价怎么处理
  • 网络协议--TFTP:简单文件传送协议
  • 安装k8s
  • 第六节——Vue中的事件
  • 【深度学习 | Transformer】释放注意力的力量:探索深度学习中的 变形金刚,一文带你读通各个模块 —— 总结篇(三)
  • 2.7每日一题(分段函数不定积分)
  • Node编写获取用户信息接口