目录
概括
指纹识别是一种基于人体生物特征的身份验证技术。它通过捕捉和分析手指上的独特纹路和细节特征,实现高准确度的身份识别。该技术广泛应用于安全系统、移动设备解锁、考勤管理等领域,有效提升了安全性和便利性。指纹识别具有唯一性、稳定性和非接触性的特点,能够在各种环境下快速准确地完成身份验证,是现代身份验证技术的重要组成部分。
导入库
python
import os
import cv2
需要安装在命令行输入:pip install opencv-python , 以opencv为例
函数一
python
"""===============计算两个指纹间匹配点的个数===================="""
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,即匹配对的数量加1
if m.distance < 0.8 * n.distance:
right += 1
return right
参数:
des1
:查询描述符的列表。这通常是从一个图像中检测到的特征点计算出的描述符。des2
:训练描述符的列表。这通常是从另一个图像中检测到的特征点计算出的描述符。k
:指定要返回的最近邻居的数量。在这个例子中,k=2
意味着将返回每个查询描述符在训练集中最近的两个邻居。
函数二
python
"""============获取指纹编号================"""
#src:需要匹配的指纹,model_base:被匹配的指纹模板,通常为文件夹
def getID(src, model_base):
max_right = 0
name = ''
#遍历指纹模板下的每一张指纹模板图片
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 = result
name = file[0]
ID = name
#若低于100,即判断指纹模板都不符合
if max_right < 100:
ID = 9999
return ID
函数三
python
"""==========根据指纹编号,获取对应姓名=============="""
def getName(ID):
nameID = {0: '张三', 1: '李四', 2: '王五', 3: '赵六', 4: '朱老七', 5: '钱八', 6: '曹九', 7: '王二麻子', 8: 'andy',9: 'Anna', 9999: '报警!'}
name = nameID.get(int(ID))
return name
主函数
python
"""==============主函数===================="""
if __name__ == '__main__':
src = './src.BMP' #匹配指纹
model_base = './figer_prints' #指纹模板
ID = getID(src, model_base) #获取匹配到的模板ID
result = getName(ID) #获取ID对应名字
print(f'识别结果为:{result}')
运行结果
src:
model_base
7.bmp
结果对比,识别正确
总结
指纹识别技术以其高精度、快速性,在身份验证领域占据重要地位。通过独特指纹特征匹配,实现高效身份识别,广泛应用于手机解锁、门禁系统等,为现代社会带来更安全便捷的身份验证体验。