【进阶OpenCV】 (5)--指纹验证

文章目录

  • 指纹验证
    • [1. 验证原理](#1. 验证原理)
    • [2. 读取图片](#2. 读取图片)
    • [3. 计算特征匹配点](#3. 计算特征匹配点)
  • 总结

指纹验证

指纹验证基于人类指纹的独特性和稳定性。每个人的指纹在图案、断点和交叉点上各不相同,这种唯一性和终生不变性使得指纹成为身份验证的可靠手段。指纹识别技术通过采集和分析指纹图像,提取指纹特征,并与预先存储的指纹特征进行比对,从而确认身份。

1. 验证原理

通过对比两个指纹之间的相似度,来确认两者是否匹配。其中,确认相似度是通过计算两个指纹之间的关键特征点数量,若是关键特征点数量匹配超过某个设定值,我们则认为他们是一个人的。

2. 读取图片

python 复制代码
import cv2
def cv_show(name,img):
    cv2.imshow(name,img)
    cv2.waitKey(0)   
python 复制代码
if __name__ == '__main__':
    src1 = cv2.imread("zw1.bmp")
    cv_show("zw1",src1)
    src2 = cv2.imread("zw2.bmp")
    cv_show("zw2", src2)
    model = cv2.imread("model.bmp")
    cv_show("model",model)

3. 计算特征匹配点

通过SIFT特征提取方法,计算两者之间的特征匹配点数量,若是数量达到设定值(此处设定为500),则认证通过,反之,认证失败。

python 复制代码
def verification(src,model):
    # 创建SIFT特征提取器
    sift = cv2.SIFT_create()
    # 检测关键点和计算描述符(特征向量) 源图像
    kp1,des1 = sift.detectAndCompute(src,None)
    # 检测关键点和计算描述符  模板图像
    kp2, des2 = sift.detectAndCompute(model, None)
    # 创建FLANN匹配器
    flann = cv2.FlannBasedMatcher()
    # 使用K近邻匹配(des1中的每个描述符与des2中的最近两个描述符进行匹配)
    matches = flann.knnMatch(des1,des2,k=2)

    ok = []
    for m,n in matches:
        # 根据Lowe's比率测试,选择最佳匹配
        if m.distance < 0.8 * n.distance:
            ok.append(m)
    # 统计通过筛选的匹配数量
    num = len(ok)
    if num >= 500:
        result = "认证通过"
    else:
        result = "认证失败"
    return result
python 复制代码
result1 = verification(src1,model)
result2 = verification(src2,model)
print("src1验证结果为:",result1)
print("src2验证结果为:", result2)
----------------
src1验证结果为: 认证通过
src2验证结果为: 认证失败

总结

本篇介绍了,通过使用SIFT特征特征提取方法,统计两者之间的特征匹配点数量,来验证指纹是否匹配。

相关推荐
一百天成为python专家12 分钟前
【项目】自然语言处理——情感分析 <上>
人工智能·rnn·自然语言处理·数据分析·lstm·pandas·easyui
新智元16 分钟前
独家!DeepSeek 最新模型上线,全新注意力机制基于北大 ACL 最佳论文
人工智能·openai
丁学文武22 分钟前
大模型原理与实践:第一章-NLP基础概念完整指南_第1部分-概念和发展历史
人工智能·自然语言处理·基础概念·大模型应用·发展历史
新智元29 分钟前
刚刚,Claude Sonnet 4.5 重磅发布,编程新王降临!
人工智能·openai
汽车仪器仪表相关领域31 分钟前
南华 NHXJ-02 汽车悬架检验台:技术特性与实操应用指南
人工智能·算法·汽车·安全性测试·稳定性测试·汽车检测·年检站
云澈ovo36 分钟前
量子计算预备役:AI辅助设计的下一代算力架构
人工智能·架构·量子计算
大千AI助手1 小时前
MATH-500:大模型数学推理能力评估基准
人工智能·大模型·llm·强化学习·评估基准·数学推理能力·math500
hans汉斯1 小时前
【人工智能与机器人研究】一种库坝系统水下成像探查有缆机器人系统设计模式
大数据·数据库·论文阅读·人工智能·设计模式·机器人·论文笔记
之歆1 小时前
LangGraph构建多智能体
人工智能·python·llama
rhy200605201 小时前
SAM的低秩特性
人工智能·算法·机器学习·语言模型