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

Python:探索高效、智能的指纹识别技术(简单易懂)

目录

概括

导入库

函数一

参数:

 函数二

函数三

主函数

运行结果

src:

model_base

7.bmp

​编辑

总结


概括

        指纹识别是一种基于人体生物特征的身份验证技术。它通过捕捉和分析手指上的独特纹路和细节特征,实现高准确度的身份识别。该技术广泛应用于安全系统、移动设备解锁、考勤管理等领域,有效提升了安全性和便利性。指纹识别具有唯一性、稳定性和非接触性的特点,能够在各种环境下快速准确地完成身份验证,是现代身份验证技术的重要组成部分。

导入库

import os
import cv2

需要安装在命令行输入:pip install opencv-python , 以opencv为例

函数一

"""===============计算两个指纹间匹配点的个数===================="""def match(src, model):src = cv2.imread(src)        #需要匹配的指纹model = cv2.imread(model)    #用来匹配识别的指纹模板sift = cv2.SIFT_create()     #建立SIFT生成器# 特征点, 特征点描述符(kps1, des1) = sift.detectAndCompute(src, None)       # 检测SIFT特征点,并计算描述符(kps2, des2) = sift.detectAndCompute(model, None)     # 检测SIFT特征点,并计算描述符#cv2.FlannBasedMatcher() 是一个特征点匹配器,用于在两组特征点之间找到最佳匹配。flann = cv2.FlannBasedMatcher()matches = flann.knnMatch(des1, des2, k=2)right = 0#m,n为匹配到的两个最近的特征点for m, n in matches:## 当最近距离跟次近距离的比值小于0.8值时,right + 1,即匹配对的数量加1if m.distance < 0.8 * n.distance:right += 1return right

参数:

  • des1:查询描述符的列表。这通常是从一个图像中检测到的特征点计算出的描述符。
  • des2:训练描述符的列表。这通常是从另一个图像中检测到的特征点计算出的描述符。
  • k:指定要返回的最近邻居的数量。在这个例子中,k=2 意味着将返回每个查询描述符在训练集中最近的两个邻居。

 函数二

"""============获取指纹编号================"""#src:需要匹配的指纹,model_base:被匹配的指纹模板,通常为文件夹
def getID(src, model_base):  max_right = 0name = ''#遍历指纹模板下的每一张指纹模板图片for file in os.listdir(model_base):#将路径连接起来,得到file的绝对路径model = os.path.join(model_base, file)#传入函数一,得到匹配正确的right数量result = match(src, model)#打印出来print(f'文件名:{model}, right:{result}')#得到匹配对的right值最大的指纹编号if result > max_right:max_right = resultname = file[0]ID = name#若低于100,即判断指纹模板都不符合if max_right < 100:ID = 9999return ID

函数三

"""==========根据指纹编号,获取对应姓名=============="""def getName(ID):nameID = {0: '张三', 1: '李四', 2: '王五', 3: '赵六', 4: '朱老七', 5: '钱八', 6: '曹九', 7: '王二麻子', 8: 'andy',9: 'Anna', 9999: '报警!'}name = nameID.get(int(ID))return name

主函数

"""==============主函数===================="""
if __name__ == '__main__':src = './src.BMP'                 #匹配指纹model_base = './figer_prints'     #指纹模板ID = getID(src, model_base)       #获取匹配到的模板IDresult = getName(ID)              #获取ID对应名字print(f'识别结果为:{result}')

运行结果

src:

model_base

7.bmp

结果对比,识别正确 

总结

        指纹识别技术以其高精度、快速性,在身份验证领域占据重要地位。通过独特指纹特征匹配,实现高效身份识别,广泛应用于手机解锁、门禁系统等,为现代社会带来更安全便捷的身份验证体验。

相关文章:

Python:探索高效、智能的指纹识别技术(简单易懂)

目录 概括 导入库 函数一 参数&#xff1a; 函数二 函数三 主函数 运行结果 src&#xff1a; model_base 7.bmp ​编辑 总结 概括 指纹识别是一种基于人体生物特征的身份验证技术。它通过捕捉和分析手指上的独特纹路和细节特征&#xff0c;实现高准确度的身份识别。…...

『SD』AI绘画,不会写提示词怎么办?

提示词 有没有想过&#xff0c;为什么你用 SD 生成的猫是长这样的。 而其他人可以生成这样的猫。 虽然生成的都是猫&#xff0c;但猫与猫之间还是有差距的。 如果你的提示词只是“cat”&#xff0c;那大概率就会出现本文第一张图的那个效果。而如果你加上一些形容词&#xff…...

搭建大型分布式服务(四十二)SpringBoot 无代码侵入实现多Kafka数据源整合插件发布

系列文章目录 文章目录 系列文章目录前言MultiKafkaStarter [V2.2]一、功能特性二、快速开始&#xff08;生产端&#xff09;三、快速开始&#xff08;消费端&#xff09;四、其它特性五、变更记录六、参考文章 前言 在分布式服务的架构演进中&#xff0c;消息队列作为核心组件…...

Python 学习路线及技巧

一、学习路线 1. 基础阶段 ● 学习 Python 的语法基础&#xff0c;如变量、数据类型、运算符、控制流等。 ● 掌握常用的 Python 标准库&#xff0c;如 os、sys、re、datetime 等。 ● 通过编写简单的程序来巩固基础&#xff0c;如计算器、字符串处理等。 2. 进阶阶段 ● 深入…...

计算机网络知识整理笔记

目录 1.对网络协议的分层&#xff1f; 2.TCP/IP和UDP之间的区别&#xff1f; 3.建立TCP连接的三次握手&#xff1f; 4.断开TCP连接的四次挥手&#xff1f; 5.TCP协议如何保证可靠性传输&#xff1f; 6.什么是TCP的拥塞控制&#xff1f; 7.什么是HTTP协议&#xff1f; 8…...

练习 String翻转 注册处理 字符串统计

p493 将字符串中指定部分进行翻转 package chapter;public class reverse {public static void main(String[] args) {String str "abcdef";str reverseMethod(str,0,3);System.out.println(str);}public static String reverseMethod(String str, int start, in…...

linux的常用系统维护命令

1.ps显示某个时间点的程序运行情况 -a &#xff1a;显示所有用户的进程 -u &#xff1a;显示用户名和启动时间 -x &#xff1a;显示 没有控制终端的进程 -e &#xff1a;显示所有进程&#xff0c;包括没有控制终端的进程 -l &#xff1a;长格式显示 -w &#xff1a;宽…...

java:aocache 0.4.0 缓存控制机制

aoocache发布第一个版本0.1.0时&#xff0c;没有考虑到使用aocache的项目对方法缓存的控制需求。 场景 给同事做培训时&#xff0c;同事提到这个需求&#xff0c;他希望能够有方法主动去清理指定方法的缓存&#xff1a; 他的数据是由其他服务启动时提供的&#xff0c;他的方法…...

试析C#编程语言的特点及功能

行步骤&#xff0c;而不必创建新方法。其声明方法是在实例化委托基础上&#xff0c;加一对花括号以代表执行范围&#xff0c;再加一个分号终止语句。 2.3.3 工作原理 C#编译器在“匿名”委托时会自动把执行代码转换成惟一命名类里的惟一命名函数。再对存储代码块的委托进行设…...

Textual Learning2 -- 使用时的小问题

1、出现的问题&#xff1a; 在vscode里面直接运行函数会显示报错&#xff1a; 我尝试在vscode中含textual库的环境下运行&#xff0c;但仍然报错 2、解决方案&#xff1a; 在命令行中运行&#xff1a; 首先按winR&#xff0c;输入cmd打开命令行 或在已经安装的conda环境&a…...

CST--如何在PCB三维模型中自由创建离散端口

在使用CST电磁仿真软件进行PCB的三维建模时&#xff0c;经常会遇到不能自动创建离散端口的问题&#xff0c;原因有很多&#xff0c;比如&#xff1a;缺少元器件封装、开路端口、多端子模型等等&#xff0c;这个时候&#xff0c;很多人会选择手动进行端口创建&#xff0c;但是&a…...

C++中的虚函数表结构框架

一.虚函数表介绍 Virtual Table虚函数表是实现多态的 每个有虚函数的类的实现&#xff0c;都有个指向虚函数的指针表&#xff08;不管是父类还是子类&#xff09; 指向虚表的指针是作为数据成员存在实例对象中 当调用虚函数时&#xff0c;就去查找对象的虚表中指向整顿派生类函…...

【ES】--Elasticsearch的高亮模式

目录 一、高亮策略1、Fast Vector Highlighter(快速向量高亮器)2、Posting Highlighter(帖子高亮器)3、Unified Highlighter(统一高亮器)4、Plain Highlighter(普通高亮器)5、总结二、高亮参数三、高亮案例解析1、words_one配置解析2、words_two配置解析3、words_three…...

使用matlab开发stm32总结,stm32-matlab常见的问题处理以及报错合集

1&#xff0c;问题&#xff1a;本来是好的&#xff0c;突然编译运行报错&#xff0c;说是确少包&#xff0c; 解决方案&#xff1a;重启以后好了 2&#xff0c;有完美的马鞍波&#xff0c;为什么不能够转动呢&#xff1f; 原因是我这里模型的问题&#xff0c;我计算出来的是占…...

落石滑坡监测报警系统:创新保障高速公路安全

​ ​​在现代交通建设中&#xff0c;高速公路的安全性和稳定性至关重要。特别是易发生落石区域&#xff0c;如何有效预防和应对落石滑坡带来的事故成为了一项关键性挑战。为此&#xff0c;落石滑坡监测报警系统应运而生&#xff0c;它通过先进的技术手段&#xff0c;为高速…...

Linux开发讲课20--- QSPI

SPI 是英语 Serial Peripheral interface 的缩写&#xff0c;顾名思义就是串行外围设备接口&#xff0c;一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚上只占用四根线&#xff0c;节约了芯片的管脚&#xff0c;为 PCB 的布局上节省空间…...

VMware ESXi 8.0U3 macOS Unlocker OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动

VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 集成驱动版&#xff0c;新增 12 款 I219 网卡驱动 VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版) 发布 ESXi 8.0U3 集成驱动版&#xff0c;在个人电脑上运行企业级工作负载 请访…...

vuepress使用简介及个人博客搭建

目录 一、介绍二、环境准备三、安装运行vuepress四、目录结构五、配置文件六、导航栏配置七、导航栏logo八、浏览器图标九、侧边栏配置十、添加 Git 仓库和编辑链接十一、部署到GitHub十二、搭建成功 一、介绍 VuePress 是 Vuejs 官方提供的一个是Vue驱动的静态网站生成器&…...

c#文件读写

1.1读取文件 方法说明​File.ReadAllText(FilePath);​读取指定路径的文件​File.ReadAllText(FilePath, Encoding);​通过指定编码格式来读取指定文件​File.ReadAllBytes();​读取二进制文件&#xff0c;并把内容读取到一个字节数组​File.ReadAllLines();​以行的形式读取文…...

WIFI 企业级认证手段 EAP-TLS介绍

EAP-TLS&#xff08;EAP-Transport Layer Security&#xff09;被认为是WLAN网络里最安全的认证方法&#xff0c;因此被企业广泛采用。本文会针对EAP-TLS的基本原理进行介绍。 在介绍原理之前&#xff0c;先介绍下WLAN网络里认证加密手段涉及到的一些基本概念。 1 802.1x IEE…...

【网络架构】keepalive

目录 一、keepalive基础 1.1 作用 1.2 原理 1.3 功能 二、keepalive安装 2.1 yum安装 2.2 编译安装 三、配置文件 3.1 keepalived相关文件 3.2 主配置的组成 3.2.1 全局配置 3.2.2 配置虚拟路由器 四、实际操作 4.1 lvskeepalived高可用群集 4.2 keepalivedngi…...

【Dison夏令营 Day 03】使用 Python 创建我们自己的 21 点游戏

21 点(英文&#xff1a;Blackjack)是一种在赌场玩的纸牌游戏。这种游戏的参与者不是互相竞争&#xff0c;而是与赌场指定的庄家竞争。在本文中&#xff0c;我们将从头开始创建可在终端上玩的玩家与庄家之间的二十一点游戏。 二十一点规则 我们将为从未玩过二十一点的读者提供…...

Workbench密码登录登录失败

Workbench密码登录登录失败操作系统禁用了密码登录方式&#xff0c;会导致使用了正确的用户名和密码仍无法登录 sudo vim /etc/ssh/sshd_config 输入O进入编辑 改完后重启 systemctl restart sshd.service 登录报错 有试了几遍登上了 可能是改完还要等一会儿...

哈尔滨高校大学智能制造实验室数字孪生可视化系统平台项目的验收

哈尔滨高校大学智能制造实验室数字孪生可视化系统平台项目的验收&#xff0c;标志着这一技术在教育领域的应用取得了新的突破。项目旨在开发一个数字孪生可视化系统平台&#xff0c;用于哈尔滨高校大学智能制造实验室的设备模拟、监测与数据分析。项目的主要目标包括&#xff1…...

009、MongoDB的分片策略

目录 MongoDB的分片策略:范围分片vs哈希分片 1. 范围分片(Range Sharding) 1.1 工作原理 1.2 优点 1.3 缺点 1.4 研究支持 2. 哈希分片(Hash Sharding) 2.1 工作原理 2.2 优点 2.3 缺点 2.4 研究支持 3. 选择合适的分片策略 4. 实践案例 4.1 电子商务平台 4.2 社…...

go~缓存设计配合singleFlight

一个缓存设计&#xff0c;配合go的singleFlight 最开始的设计如下 添加分布式缓存 上线后分布式缓存上涨的流量并不等于下游下降的流量&#xff0c;而是下游下降的流量 * 2&#xff5e;3 究其原因&#xff0c;就是采用了go的singleFlight&#xff0c;假定请求缓存时长10ms&a…...

多线程引发的安全问题

前言&#x1f440;~ 上一章我们介绍了线程的一些基础知识点&#xff0c;例如创建线程、查看线程、中断线程、等待线程等知识点&#xff0c;今天我们讲解多线程下引发的安全问题 线程安全&#xff08;最复杂也最重要&#xff09; 产生线程安全问题的原因 锁&#xff08;重要…...

在晋升受阻或遭受不公待遇申诉时,这样写是不是好一些?

在晋升受阻或遭受不公待遇申诉时&#xff0c;这样写是不是好一些&#xff1f; 在职场中&#xff0c;晋升受阻或遭受不公待遇是员工可能面临的问题之一。面对这样的情况&#xff0c;如何撰写一份有效的申诉材料&#xff0c;以维护自己的合法权益&#xff0c;就显得尤为重要。#李…...

LeetCode 2710.移除字符串中的尾随零:模拟

【LetMeFly】2710.移除字符串中的尾随零&#xff1a;模拟 力扣题目链接&#xff1a;https://leetcode.cn/problems/remove-trailing-zeros-from-a-string/ 给你一个用字符串表示的正整数 num &#xff0c;请你以字符串形式返回不含尾随零的整数 num 。 示例 1&#xff1a; 输…...

代码随想录训练营第二十三天 39组合总和 40组合总和II 131分割回文串

第一题&#xff1a; 原题链接&#xff1a;39. 组合总和 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 终止条件&#xff1a; 用一个sum值来记录当前组合中元素的总和。当sum的值大于target的时候证明该组合不合适&#xff0c;直接return。当sum的值等于target的…...

网易网站建设的目的/网站建设公司推荐

数学和计算机学院学生会体育部早操管理制度数学与计算机学院体育部早操管理制度书数学与计算机学院体育部二0一三年三月十五长江师范学院数学与计算机学院早操管理制度一、背景根据长江师范学院规定&#xff0c;大一新生在每周周二至周五出早操。做早操可以强身健体&#xff0c…...

加工厂网站建设/百度经验悬赏令

核心代码&#xff1a;(1)SmsManager manager SmsManager.getDefault(); //获得默认的消息管理器(2)ArrayList<String> list manager.divideMessage(String txt); //拆分长短信(3)manager.sendTextMessage(String phone,null,String content,null,null); //发送短信转载…...

网站常用布局/电脑培训零基础培训班

很荣幸今天有这个机会跟大家分享我自己对人工智能伦理的一些观察和思考。我今天分享的主题是“人工智能伦理&#xff1a;问题与策略”。 1.1人工智能时代正在加速到来&#xff0c;算法决策开始兴起 我们看到&#xff0c;第三次AI浪潮已经开启&#xff0c;这体现在三个层面。 在…...

去视频网站做编辑器/网络营销方案策划书

今天我们这一篇的主题就是 “快速搭建开发环境”。快速&#xff0c;有多快&#xff1f;答案&#xff1a;取决于你的网速。因为我们真的有这么一个脚手架&#xff1a;qvk。什么是 qvkqvk 是一个集成现代前端工程化最佳实践的通用 Web 开发环境&#xff0c;可用于开发传统 C/S 架…...

wordpress数据库里查看密码/百度手机app下载安装

excel文件设置了工作表保护&#xff0c;想要编辑文件&#xff0c;在撤销的时候发现需要输入密码才能够撤销&#xff0c;但是并不知道密码该怎么办&#xff0c;这种情况&#xff0c;就可以使用第三方软件进行解除限制。比如奥凯丰 EXCEL解密大师。 【EXCEL解密大师】快速找回密…...

网站建设工作室介绍范文/百度链接地址

Mac python 批量赋值文件&#xff0c;将大文件分为几个小文件import numpy as npimport osfrom shutil import copy# i 用来计算文件数量&#xff0c;k 用来计算新建文件夹的数量i 0k 0num1000filenameOldData# 想保存到的根路径save_dir ./test# 如果目录不存在&#xff0c…...