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.mzph.cn/bicheng/37105.shtml

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

相关文章

【工具测评】ONLYOFFICE8.1版本桌面编辑器测评:好用!

随着远程工作的普及和数字化办公的发展&#xff0c;越来越多的人开始寻找功能强大、易于使用的办公软件。在这个背景下&#xff0c;ONLYOFFICE 8.1应运而生&#xff0c;成为许多用户的新选择。ONLYOFFICE 8.1是一款办公套件软件&#xff0c;提供文档处理、电子表格和幻灯片制作…

动手学深度学习(Pytorch版)代码实践 -计算机视觉-41目标检测数据集

41目标检测数据集 import os import pandas as pd import torch import torchvision import matplotlib.pylab as plt from d2l import torch as d2l# 数据集下载链接 # http://d2l-data.s3-accelerate.amazonaws.com/banana-detection.zip# 读取数据集 #save def read_data_b…

6.28U-Net深度学习基准模型特点与应用

U-Net深度学习基准模型特点与应用 U-Net是一种在深度学习领域广泛应用于图像分割任务的卷积神经网络&#xff08;CNN&#xff09;模型&#xff0c;最初由Olaf Ronneberger、Philipp Fischer和Thomas Brox在2015年的论文《U-Net: Convolutional Networks for Biomedical Image …

右键新建没有TXT文本文档的解决办法

电脑右键新建&#xff0c;发现没有txt了&#xff0c;我查网上办法都有点复杂&#xff0c;诸如注册表的&#xff0c;但是其实很简单&#xff0c;重启windows资源管理器就可以了。 点击重新启动&#xff0c;之后新建就有txt文档了。

C++20中的Feature Test Mocros

C20定义了一组预处理器宏&#xff0c;用于测试各种语言和库的feature。 Feature Test Mocros(特性测试宏)是C20中引入的一种强大机制&#xff0c;用于应对兼容性问题。Feature Test Mocros作为预处理器指令(preprocessor directives)出现&#xff0c;它使你能够在编译过程中仔细…

区块链的优势与挑战:为什么区块链如此重要?

区块链听起来像是一种高科技的魔法&#xff0c;很多人都想知道它到底是怎么回事&#xff0c;为什么会引起如此大的关注。今天&#xff0c;我们就来揭开区块链的神秘面纱&#xff0c;看看它的优势和挑战&#xff0c;顺便聊聊为什么它会变得如此重要。 优势篇 1. 去中心化&…

流水线作业模拟程序

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 namespace 流水线作业模拟 {public partial class Form1 : Form{public Form1(){InitializeComponent();}private int Count 0;private bool IsStop false;private void uiLight1_Click(object sender, EventArgs e…

[MYSQL] MYSQL库的操作

前言 本文主要介绍MYSQL里 库 的操作 请注意 : 在MYSQL中,命令行是不区分大小写的 1.创建库 create database [if not exists] database_name [charsetutf8 collateutf8_general_ci] ...] create database 是命名语法,不可省略[if not exists] 如果不存在创建,如果存在跳过…

GESP 四级急救包(2):客观题真题集

客观题真题集 一、选择题1. 真题梳理2. 真题答案3. 重难点点播(1) 指针和地址(2) 时间复杂度 二、判断题1. 真题梳理2. 真题答案 一、选择题 1. 真题梳理 若函数声明为 void f(int &a, int b, const int &c)&#xff0c;且在主函数内已经声明了 x , y , z x,y,z x,y,…

最新Node.js安装及配置详细教程

文章目录 下载Node.js安装Node.js配置Node.js1、修改npm包的全局安装路径和缓存路径2、环境变量设置3、镜像源配置4、安装其他包管理工具 下载Node.js 下载&#xff1a;https://nodejs.org/en/download/prebuilt-installer&#xff0c;下载LTS版本的&#xff0c;LTS(Long Time…

代码随想录算法训练营day67 | 110.字符串接龙、105. 有向图的完全可达性、106. 岛屿的周长

本次题目全部来自卡码网 110.字符串接龙 本题只需要求出最短路径的长度就可以了&#xff0c;不用找出具体路径。 所以这道题要解决两个问题&#xff1a; 图中的线是如何连在一起的起点和终点的最短路径长度 首先题目中并没有给出点与点之间的连线&#xff0c;而是要我们自…

驼峰命名法在编程中的应用

驼峰命名法在编程中的应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;驼峰命名法&#xff08;Camel Case&#xff09;是一种常见的命名约定&#xff0c;在编…

IPython “%%script“ 魔法命令:跨平台脚本执行指南

IPython是一个强大的交互式Python解释器&#xff0c;提供了许多增强功能来提高开发效率。其中&#xff0c;%%script魔法命令是一个非常有用的特性&#xff0c;它允许用户在IPython环境中执行外部脚本。本文将详细介绍%%script命令的使用方法&#xff0c;包括其基本概念、使用场…

前端 JS 经典:函数签名

函数签名是什么&#xff1f;函数签名 函数名 参数 返回类型。 当我们明确了这 3 样东西&#xff0c;那么这个函数的作用和用法就确定了&#xff0c;它内部怎么实现的&#xff0c;我们完全不用管。 如下&#xff0c;我们知道这是一个判断属性是否对象的函数&#xff0c;只需…

SQL 基本语法

SQL&#xff08;Structured Query Language&#xff09;是一种用于管理和操作关系型数据库的语言。以下是SQL的基本语法&#xff1a; 创建数据库&#xff1a; CREATE DATABASE database_name;使用数据库&#xff1a; USE database_name;创建表&#xff1a; CREATE TABLE table_…

基于多模态知识图谱的多模态推理-MR-MKG

MR-MKG论文中提出了一种新的多模态推理方法&#xff0c;即利用多模态知识图&#xff08;Multimodal Knowledge Graph, MMKG&#xff09;进行多模态推理的方法。这种方法旨在通过从MMKG中学习&#xff0c;扩展大型语言模型&#xff08;LLMs&#xff09;的多模态知识。 1 三个模…

面对.rmallox勒索病毒:如何有效防范及应对

引言&#xff1a; 在当今数字化社会&#xff0c;网络安全问题日益严重&#xff0c;勒索病毒成为企业和个人不可忽视的威胁之一。最近出现的.rmallox勒索病毒更是给全球各地的用户带来了严重的数据安全问题。本文将探讨.rmallox勒索病毒的特点、感染方式及应对策略&#xff0c;…

探索CSS布局:创建一个居中的内嵌方块示例

在网页设计中&#xff0c;布局是至关重要的部分。CSS提供了多种方式来实现元素的布局&#xff0c;包括居中对齐、外边距、内边距等。本文将通过一个简单的示例&#xff0c;介绍如何使用CSS来创建一个居中的内嵌方块&#xff0c;并探讨其背后的布局原理。 HTML 结构 首先&…

java服务MultipartFile入参测试

项目中经常会涉及到文件的上传下载以及导入相关的功能&#xff0c;今天针对MultipartFile类型文档导入写一下如何测试。 文档导入接口完成&#xff0c;使用postman测试&#xff0c;使用POST方法&#xff0c;进入Body模块&#xff0c;选择form-data选项&#xff0c;key的框体右侧…

微服务部署上线过程总结

目录 一、找到适合自己的部署方式 二、开始部署&#xff0c;先安装需要的环境 2.1 梳理一下都需要安装什么软件 2.2 配置数据库环境 2.3 配置redis 2.4 配置nacos 2.5 配置rabbitmq 2.6 配置docker环境 三、环境配置好了&#xff0c;开始部署后端 3.1 梳理后端都…