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:探索高效、智能的指纹识别技术(简单易懂)
目录 概括 导入库 函数一 参数: 函数二 函数三 主函数 运行结果 src: model_base 7.bmp 编辑 总结 概括 指纹识别是一种基于人体生物特征的身份验证技术。它通过捕捉和分析手指上的独特纹路和细节特征,实现高准确度的身份识别。…...
『SD』AI绘画,不会写提示词怎么办?
提示词 有没有想过,为什么你用 SD 生成的猫是长这样的。 而其他人可以生成这样的猫。 虽然生成的都是猫,但猫与猫之间还是有差距的。 如果你的提示词只是“cat”,那大概率就会出现本文第一张图的那个效果。而如果你加上一些形容词ÿ…...
搭建大型分布式服务(四十二)SpringBoot 无代码侵入实现多Kafka数据源整合插件发布
系列文章目录 文章目录 系列文章目录前言MultiKafkaStarter [V2.2]一、功能特性二、快速开始(生产端)三、快速开始(消费端)四、其它特性五、变更记录六、参考文章 前言 在分布式服务的架构演进中,消息队列作为核心组件…...
Python 学习路线及技巧
一、学习路线 1. 基础阶段 ● 学习 Python 的语法基础,如变量、数据类型、运算符、控制流等。 ● 掌握常用的 Python 标准库,如 os、sys、re、datetime 等。 ● 通过编写简单的程序来巩固基础,如计算器、字符串处理等。 2. 进阶阶段 ● 深入…...
计算机网络知识整理笔记
目录 1.对网络协议的分层? 2.TCP/IP和UDP之间的区别? 3.建立TCP连接的三次握手? 4.断开TCP连接的四次挥手? 5.TCP协议如何保证可靠性传输? 6.什么是TCP的拥塞控制? 7.什么是HTTP协议? 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 :显示所有用户的进程 -u :显示用户名和启动时间 -x :显示 没有控制终端的进程 -e :显示所有进程,包括没有控制终端的进程 -l :长格式显示 -w :宽…...
java:aocache 0.4.0 缓存控制机制
aoocache发布第一个版本0.1.0时,没有考虑到使用aocache的项目对方法缓存的控制需求。 场景 给同事做培训时,同事提到这个需求,他希望能够有方法主动去清理指定方法的缓存: 他的数据是由其他服务启动时提供的,他的方法…...
试析C#编程语言的特点及功能
行步骤,而不必创建新方法。其声明方法是在实例化委托基础上,加一对花括号以代表执行范围,再加一个分号终止语句。 2.3.3 工作原理 C#编译器在“匿名”委托时会自动把执行代码转换成惟一命名类里的惟一命名函数。再对存储代码块的委托进行设…...
Textual Learning2 -- 使用时的小问题
1、出现的问题: 在vscode里面直接运行函数会显示报错: 我尝试在vscode中含textual库的环境下运行,但仍然报错 2、解决方案: 在命令行中运行: 首先按winR,输入cmd打开命令行 或在已经安装的conda环境&a…...
CST--如何在PCB三维模型中自由创建离散端口
在使用CST电磁仿真软件进行PCB的三维建模时,经常会遇到不能自动创建离散端口的问题,原因有很多,比如:缺少元器件封装、开路端口、多端子模型等等,这个时候,很多人会选择手动进行端口创建,但是&a…...
C++中的虚函数表结构框架
一.虚函数表介绍 Virtual Table虚函数表是实现多态的 每个有虚函数的类的实现,都有个指向虚函数的指针表(不管是父类还是子类) 指向虚表的指针是作为数据成员存在实例对象中 当调用虚函数时,就去查找对象的虚表中指向整顿派生类函…...
【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,问题:本来是好的,突然编译运行报错,说是确少包, 解决方案:重启以后好了 2,有完美的马鞍波,为什么不能够转动呢? 原因是我这里模型的问题,我计算出来的是占…...
落石滑坡监测报警系统:创新保障高速公路安全
在现代交通建设中,高速公路的安全性和稳定性至关重要。特别是易发生落石区域,如何有效预防和应对落石滑坡带来的事故成为了一项关键性挑战。为此,落石滑坡监测报警系统应运而生,它通过先进的技术手段,为高速…...
Linux开发讲课20--- QSPI
SPI 是英语 Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口,一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,为 PCB 的布局上节省空间…...
VMware ESXi 8.0U3 macOS Unlocker OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动
VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动 VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版) 发布 ESXi 8.0U3 集成驱动版,在个人电脑上运行企业级工作负载 请访…...
vuepress使用简介及个人博客搭建
目录 一、介绍二、环境准备三、安装运行vuepress四、目录结构五、配置文件六、导航栏配置七、导航栏logo八、浏览器图标九、侧边栏配置十、添加 Git 仓库和编辑链接十一、部署到GitHub十二、搭建成功 一、介绍 VuePress 是 Vuejs 官方提供的一个是Vue驱动的静态网站生成器&…...
c#文件读写
1.1读取文件 方法说明File.ReadAllText(FilePath);读取指定路径的文件File.ReadAllText(FilePath, Encoding);通过指定编码格式来读取指定文件File.ReadAllBytes();读取二进制文件,并把内容读取到一个字节数组File.ReadAllLines();以行的形式读取文…...
WIFI 企业级认证手段 EAP-TLS介绍
EAP-TLS(EAP-Transport Layer Security)被认为是WLAN网络里最安全的认证方法,因此被企业广泛采用。本文会针对EAP-TLS的基本原理进行介绍。 在介绍原理之前,先介绍下WLAN网络里认证加密手段涉及到的一些基本概念。 1 802.1x IEE…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
OCR MLLM Evaluation
为什么需要评测体系?——背景与矛盾 能干的事: 看清楚发票、身份证上的字(准确率>90%),速度飞快(眨眼间完成)。干不了的事: 碰到复杂表格(合并单元…...
CppCon 2015 学习:Reactive Stream Processing in Industrial IoT using DDS and Rx
“Reactive Stream Processing in Industrial IoT using DDS and Rx” 是指在工业物联网(IIoT)场景中,结合 DDS(Data Distribution Service) 和 Rx(Reactive Extensions) 技术,实现 …...
SQL进阶之旅 Day 22:批处理与游标优化
【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...
