当前位置: 首页 > 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

结果对比,识别正确 

总结

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

http://www.lryc.cn/news/386757.html

相关文章:

  • 『SD』AI绘画,不会写提示词怎么办?
  • 搭建大型分布式服务(四十二)SpringBoot 无代码侵入实现多Kafka数据源整合插件发布
  • Python 学习路线及技巧
  • 计算机网络知识整理笔记
  • 练习 String翻转 注册处理 字符串统计
  • linux的常用系统维护命令
  • java:aocache 0.4.0 缓存控制机制
  • 试析C#编程语言的特点及功能
  • Textual Learning2 -- 使用时的小问题
  • CST--如何在PCB三维模型中自由创建离散端口
  • C++中的虚函数表结构框架
  • 【ES】--Elasticsearch的高亮模式
  • 使用matlab开发stm32总结,stm32-matlab常见的问题处理以及报错合集
  • 落石滑坡监测报警系统:创新保障高速公路安全
  • Linux开发讲课20--- QSPI
  • VMware ESXi 8.0U3 macOS Unlocker OEM BIOS 集成驱动版,新增 12 款 I219 网卡驱动
  • vuepress使用简介及个人博客搭建
  • c#文件读写
  • WIFI 企业级认证手段 EAP-TLS介绍
  • 【网络架构】keepalive
  • 【Dison夏令营 Day 03】使用 Python 创建我们自己的 21 点游戏
  • Workbench密码登录登录失败
  • 哈尔滨高校大学智能制造实验室数字孪生可视化系统平台项目的验收
  • 009、MongoDB的分片策略
  • go~缓存设计配合singleFlight
  • 多线程引发的安全问题
  • 在晋升受阻或遭受不公待遇申诉时,这样写是不是好一些?
  • LeetCode 2710.移除字符串中的尾随零:模拟
  • 代码随想录训练营第二十三天 39组合总和 40组合总和II 131分割回文串
  • 【C++】数组、字符串