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

news2024/11/16 1:42:29

我们在开发中经常会有人脸识别的需求,今天就实现一个简单的人脸识别,调用的第三方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.coloradmin.cn/o/1139549.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《SpringBoot项目实战》第一篇—接口参数的一些弯弯绕绕

系列文章导航 第一篇—接口参数的一些弯弯绕绕 第二篇—接口用户上下文的设计与实现 第三篇—留下用户调用接口的痕迹 第四篇—接口的权限控制 第五篇—接口发生异常如何统一处理 本文参考项目源码地址&#xff1a;summo-springboot-interface-demo 前言 大家好&#xff01;…

MessageQueue 深入理解Android卷2 学习笔记

MessageQueue类封装了与消息队列有关的操作&#xff0c;一个以消息驱动的系统中&#xff0c;最重要部分就是消息队列和消息处理循环。 MessageQueue的核心代码在native层&#xff0c;可以处理java和native的事件 1.1MessageQueue创建 构造方法&#xff0c;调用nativeInit fra…

外网访问|SD-WAN跨境网络专线助力企业摆脱网络困境

在如今国际市场的大趋势下&#xff0c;跨境访问和沟通对于外贸企业来说至关重要&#xff0c;国际市场的竞争越来越激烈&#xff0c;外贸企业需要与全球各地的合作伙伴、客户和供应商保持紧密的跨境访问和沟通。而在解决跨境网络困境方面&#xff0c;MPLS、VPN和SD-WAN是常见的选…

CVE漏洞复现-CVE-2023-38831 WinRAR代码执行漏洞

CVE-2023-38831 WinRAR代码执行漏洞 WinRAR介绍 WinRAR 是一款功能强大的压缩包管理器&#xff0c;它是档案工具RAR在 Windows环境下的图形界面。 该软件可用于备份数据&#xff0c;缩减电子邮件附件的大小&#xff0c;解压缩从 Internet 上下载的RAR、ZIP及其它类型文件&…

装了固态硬盘Win10开机很慢的解决方法

在Win10电脑中&#xff0c;用户反映自己装了固态硬盘后&#xff0c;电脑开机变得很慢&#xff0c;想知道解决此问题的方法。接下来小编给大家详细介绍关于解决装了固态硬盘Win10电脑开机很慢的问题&#xff0c;解决后Win10电脑开机速度就能变得更快。 装了固态硬盘Win10开机很慢…

【速看】如何通过合理的封装,让你的自动化脚本更上一层楼!

1. 前言 上一篇推文利用一个在图片范围内实现随机坐标点击的例子&#xff0c;去教会大家如何将自己想要的效果实现出来&#xff0c;受到大家的热情反响&#xff0c;在我们官方讨论群中&#xff0c;还有大佬对我们的示例代码进行优化改进&#xff0c;做了很多合理的函数封装&…

B链圆桌派 — 创新的去中心化存储网络 BNB GREENFIELD 主网上线

B链圆桌派 主題: BNB GREENFIELD主网上线 - 创新的去中心化资料储存网路 日期: 10/19, 8 pm utc8 頻道&#xff1a; BNB Chain 华语电报群 ○ AMA环节 ○ BNB GREENFIELD主网上线 一、回复主持人问题 嘉宾回答主持人提出的问题。本环节请大家保持安静&#xff0c;专注嘉宾…

Flink CDC 2.0 主要是借鉴 DBLog 算法

DBLog 算法原理 DBLog 这个算法的原理分成两个部分&#xff0c;第一部分是分 chunk&#xff0c;第二部分是读 chunk。分 chunk 就是把一张表分为多个 chunk&#xff08;桶/片&#xff09;。我可以把这些 chunk 分发给不同的并发的 task 去做。例如&#xff1a;有 reader1 和 re…

Windows详细安装和彻底删除RabbitMQ图文流程

RabbiitMQ简介 RabbitMQ是实现了高级消息队列协议&#xff08;AMQP&#xff1a;Advanced Message Queue Protocol&#xff09;的开源消息代理软件&#xff08;亦称面向消息的中间件&#xff09;。RabbitMQ服务器是用Erlang语言编写的&#xff0c;而聚类和故障转移是构建在开放…

Redis -- 基础知识3 数据类型及指令

FLUSHALL:清空所有键值对操作(最好别搞,删库要被绳之以法的) 1.string类型 1.介绍 1.redis的字符串,直接按照二进制进行存储,所以可以存储任何数据,取出时不需要转码 2.redis的string类型,限制大小最大为512M,因为为单线程模型为了操作短平快 2.操作 1.set与get set key value …

财务数字化转型是什么?_光点科技

财务数字化转型是当今企业发展中的一项关键策略&#xff0c;旨在借助先进的数字技术&#xff0c;重新塑造和优化财务管理体系&#xff0c;以适应迅速变化的商业环境。这一转型不仅仅是技术的升级&#xff0c;更是对企业财务理念和流程的全面升级和改革。 财务数字化转型的核心在…

【Java】Java开发环境搭建

Java开发环境搭建 文章目录 Java开发环境搭建1. Java开发环境搭建1.1 什么是JDK、JRE1.2 JDK的下载1.3 JDK的安装1.4 配置path环境变量1.4.1 理解path环境变量1.4.2 JDK8配置&#xff1a;配置JAVA_HOMEpath1.4.3 JDK17配置方案&#xff1a;自动配置 1. Java开发环境搭建 1.1 什…

掌握CSS Flexbox,打造完美响应式布局,适配各种设备!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 基…

磁盘监控:告警时发送邮件

1.配置邮箱 1.编辑邮箱配置文件 vim /etc/mail.rc2.在末尾输入自己的邮箱配置&#xff0c;以163邮箱为例 #开启ssl set ssl-verifyignore #证书目录&#xff0c;下方为centos系统证书默认位置&#xff0c;也自行生成证书并指定 set nss-config-dir/etc/pki/nssdb # 配置的第…

Windows 11 如何同步文件到OneDrive ?

Windows 11 中的 OneDrive OneDrive 默认内置于 Windows 11系统中。Windows 11从设置中删除了原来的两种备份方法并添加了OneDrive。更重要的是&#xff0c;微软在设置中添加了OneDrive Sync&#xff0c;以取代设置中的备份功能。 您可以使用 OneDrive 在计算机和云之间同步文…

【Leetcode】200. 岛屿数量

给你一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的的二维网格&#xff0c;请你计算网格中岛屿的数量。 岛屿总是被水包围&#xff0c;并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外&#xff0c;你可以假设该网格的四条边…

【信创】 银河麒麟 软件目录及 常见问题汇总(持续更新)

1. 官方问题列举常见问题 常见问题国产操作系统、银河麒麟、中标麒麟、开放麒麟、星光麒麟——麒麟软件官方网站 2. 官方资源池目录 Index of /kylin/KYLIN-ALL/pool/ 如 gcc 的安装依赖 deb包目录&#xff1a; 3. 麒麟系统各版本 软件源使用方法

70 搜索插入位置

搜索插入位置 题解1 二分查找防越界写法 题解2 STL大法两行 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c; 并返回其索引。如果目标值不存在于数组中&#xff0c; 返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O ( l o g n ) O(log n…

学习paddle-detection(paddlex的使用)

首先下载paddlex&#xff08;网页&#xff09;的本地软件&#xff0c;下载链接如下&#xff1a; paddlex 下载完成后进行安装 打开后选择开发者模式&#xff0c;开发者模式主要是和VScode进行集成 本章节主要介绍在开发者模式下可以查看和编辑的文件及其作用&#xff0c;关于…

Vuex插件的安装与使用原理

Vuex插件的安装与使用原理 Vuex安装和环境搭建 安装Vuex 第一步&#xff1a;打开CMD窗口&#xff0c;通过命令转到Vue的安装路径第二步&#xff1a;输入安装Vuex的命令 vue2 安装 Vuex3 版本&#xff1a;npm i vuex3vue3 安装 Vuex4 版本&#xff1a;npm i vuex4 当在CMD窗口…