使用中控指纹采集器开发指纹识别案例V1.0

这两天正好有点琐碎的时间,就将两年前未开发完毕的指纹识别项目翻出来继续写了写。
运行环境:
 中控指纹采集器
 Win10操作系统
 .netframework4.0
 Sqlserver2008及以上
源码已经上传到微信公众号【雄雄的小课堂】中,回复“指纹识别源码获取”即可下载。

一、 指纹识别项目运行流程:
 用户注册:输入用户名、密码以及采集完整的3遍指纹。
 用户登录:输入注册时的用户名,使用注册时的指纹,即可登录成功
 采集指纹时,3次需要一样的,如果不一样,提示采集失败
 登录时,需要用户名和指纹对应,如果不对应,则提示登陆失败,采集器闪红灯以及有警告声响
二、 指纹识别项目中的部分截图:

  1. 注册页面:
    在这里插入图片描述
    2.登录页面
    在这里插入图片描述
    3.如果没有指纹识别采集器,提示:
    在这里插入图片描述
    4.指纹采集3次成功:
    在这里插入图片描述
    5.登录成功:
    在这里插入图片描述
    6.登陆失败:

在这里插入图片描述
三、 部分代码:

  1. 采集指纹的代码
/// <summary>/// 采集指纹/// </summary>public void Caiji(){if (this.axZKFPEngX1.InitEngine() == 0){try{this.IsGoodQuality = false;this.richTextBox1.Clear();this.axZKFPEngX1.CancelEnroll();this.axZKFPEngX1.EnrollCount = 10; // 取样次数 ,3次this.axZKFPEngX1.BeginEnroll();ShowMsgInfo("开始登记指纹,推荐将您的食指放\n\n在采集器上进行登记\n\n(如果有困难,您也可以使用其它手指)……");// MessageBox.Show("开始登记指纹");}catch{MessageBox.Show("出现异常");}}else{MessageBox.Show("请买个指纹采集仪", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);}}
  1. 将指纹登记特征模版保存到指纹识别高速缓冲空间,并显示指纹登记结果
/// <summary>/// 将指纹登记特征模版保存到指纹识别高速缓冲空间,并显示指纹登记结果/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void axZKFPEngX1_OnEnroll(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnEnrollEvent e){if (e.actionResult){this.textBox1.Text = this.axZKFPEngX1.GetTemplateAsString();int name = this.axZKFPEngX1.AddRegTemplateStrToFPCacheDB(fpcHandle, 4, this.axZKFPEngX1.GetTemplateAsString());MessageBox.Show("指纹登记成功! ", "提示! ", MessageBoxButtons.OK, MessageBoxIcon.Information);//ShowMsgInfo("指纹登记成功!");//保存所登记的指纹}else{MessageBox.Show("指纹登记失败! ", "提示! ", MessageBoxButtons.OK, MessageBoxIcon.Stop);}}

3.取得指纹初始特征,0:好的指纹特征 1:特征点不够

/// <summary>/// 取得指纹初始特征,0:好的指纹特征  1:特征点不够/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void axZKFPEngX1_OnFeatureInfo(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnFeatureInfoEvent e){String strTemp = "指纹质量";if (e.aQuality != 0){strTemp = strTemp + "不符合标准!";this.labelResults.Text = "当前指纹特征点不够,请继续……";//MessageBox.Show("当前指纹特征点不够,请继续……! ", "提示! ", MessageBoxButtons.OK);}else{strTemp = strTemp + " 符合指标要求。";this.IsGoodQuality = true;this.labelResults.Text = "指纹特征点良好,请保存";//MessageBox.Show("指纹特征点良好,请保存 ", "提示! ", MessageBoxButtons.OK);}if (this.axZKFPEngX1.EnrollIndex != 1){if (this.axZKFPEngX1.IsRegister){if (this.axZKFPEngX1.EnrollIndex - 1 > 0){strTemp = strTemp + '\n' + "采集状态:还需要按手指 " + Convert.ToString(this.axZKFPEngX1.EnrollIndex - 1) + " 次!";}}}ShowMsgInfo(strTemp);}

4.获取指纹图像并在窗口中实时显示

 /// <summary>/// 获取指纹图像并在窗口中实时显示/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void axZKFPEngX1_OnImageReceived(object sender, AxZKFPEngXControl.IZKFPEngXEvents_OnImageReceivedEvent e){this.labelResults.Text = "";Graphics g = pictureBox1.CreateGraphics();Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);g = Graphics.FromImage(bmp);int dc = g.GetHdc().ToInt32();this.axZKFPEngX1.PrintImageAt(dc, 0, 0, bmp.Width, bmp.Height);g.Dispose();this.pictureBox1.Image = bmp;}

5.指纹比对以及控制声音和灯光的关键代码

this.axZKFPEngX1.CancelEnroll();//  string saveTemplates = this.textBox1.Text;string curTempldates = this.axZKFPEngX1.GetTemplateAsString();bool regChange = true;//调用根据姓名查询指纹的方法string old_zhiwen = ud.Login(txtname.Text);if (this.axZKFPEngX1.VerFingerFromStr(ref old_zhiwen, curTempldates, false, ref regChange)){MessageBox.Show("登录成功!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Information);}else{KongZhi(11, 0);  //关闭绿灯KongZhi(13, 1); //打开声音KongZhi(12, 1); //打开红灯KongZhi(13, 0); //关闭声音KongZhi(12, 0); //打开红灯KongZhi(11, 0);  //关闭绿灯KongZhi(13, 1); //打开声音KongZhi(12, 1); //打开红灯KongZhi(13, 0); //关闭声音KongZhi(12, 0); //打开红灯MessageBox.Show("登录失败!", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);}

四、 整个运行流程视频:https://v.qq.com/x/page/u30471pj5j5.html

欢迎关注公众号:雄雄的小课堂
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325488.shtml

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

相关文章

在CentOS上使用Jexus托管运行 ZKEACMS

ZKEACMS Core 是基于 .net core 开发的&#xff0c;可以在 windows, linux, mac 上跨平台运行&#xff0c;接下来我们来看看如何在 CentOS 上使用Jexus托管运行 ZKEACMS&#xff0c;通常我们在Linux部署ASP.NET Core应用&#xff0c;按照微软的官方文档&#xff0c;我们通常需要…

中控指纹采集器开发指纹识别项目(说明)

历史指纹识别相关开发版本&#xff1a;指纹识别开发1.0&#xff0c;开发时间&#xff1a;2018-01-04 指纹识别开发2.0&#xff0c;开发时间&#xff1a;2018-01-04指纹识别开发3.0&#xff0c;开发时间&#xff1a;2020-01-06可以从时间上看的出来&#xff0c;在2018年1月4日&a…

MSSQL-Scripter,一个新的生成T-SQL脚本的SQL Server命令行工具

这里向大家介绍一个新的生成T-SQL脚本的SQL Server命令行工具&#xff1a;mssql-scripter。它支持在SQL Server、Azure SQL DB以及Azure SQL DW中为数据库生成CREATE和INSERT T-SQL脚本。 Mssql-scripter是一个跨平台的命令行工具&#xff0c;功能等同于SQL Server Management…

用startSmoothScroll实现RecyclerView滚动到指定位置并置顶,含有动画。

RecyclerView滚动到指定位置并置顶 RecyclerView本身提供了几个定位的方法&#xff0c;除了手动滑动的scrollTo&#xff0c;smootScrollTo和scrollBy&#xff0c;smoothScrollBy方法之外&#xff0c;有一个直接滑动到指定位置item的scrollToPosition方法和另一个在此基础上平滑…

重要说明,粉丝必看【java人脸识别说明】

重要通知关于人脸识别简要说明&#xff1a; 源码即日起由免费改为收费。以下是微信收款码&#xff0c;如果有需要可以直接扫码转账即可。&#xff08;注意&#xff0c;源码均为测试好的&#xff0c;故各位在开发的过程中遇到的源码问题不提供任何技术支持。【转账完成之后可以直…

包装类

如果用包装类可以打印出来 <!DOCTYPE html> <html> <head><meta charset"UTF-8"><title></title><script type"text/javascript">var s123;snew String(s);s.hello"nihao";console.log(s.hello);<…

深入理解C#:编程技巧总结(二)

以下总结参阅了&#xff1a;MSDN文档、《C#高级编程》、《C#本质论》、前辈们的博客等资料&#xff0c;如有不正确的地方&#xff0c;请帮忙及时指出&#xff01;以免误导&#xff01; 在上一篇 深入理解C#&#xff1a;编程技巧总结&#xff08;一&#xff09; 中总结了25点&a…

不一样的假期,到底哪里不一样?

目录&#xff1a;1.回访17级同学们&#xff0c;了解同学们目前的工作情况2.和18级同学们聊天&#xff0c;了解假期在家的学习情况3.检查19级同学们提交至小程序内的作业。回忆17级前两天将我带的17级毕业班挨个找了一遍&#xff0c;大致了解了下大家最近的工作情况&#xff0c;…

TensorFlowSharp入门使用C#编写TensorFlow人工智能应用

TensorFlowSharp入门使用C#编写TensorFlow人工智能应用学习。 TensorFlow简单介绍 TensorFlow 是谷歌的第二代机器学习系统&#xff0c;按照谷歌所说&#xff0c;在某些基准测试中&#xff0c;TensorFlow的表现比第一代的DistBelief快了2倍。 TensorFlow 内建深度学习的扩展支…

Spring Cloud 升级最新 Finchley 版本,踩了所有的坑

转载自 Spring Cloud 升级最新 Finchley 版本&#xff0c;踩了所有的坑 Spring Boot 2.x 已经发布了很久&#xff0c;现在 Spring Cloud 也发布了 基于 Spring Boot 2.x 的 Finchley 版本&#xff0c;现在一起为项目做一次整体框架升级。 升级前 > 升级后 Spring Boot …

快来看看你们的新年礼物,猜猜是什么?

春节总把新桃换旧符千门万户曈曈日春风送暖入屠苏爆竹声中一岁除新年礼物前言各位同学们&#xff0c;新春快乐哇&#xff0c;利用假期的时间&#xff0c;花费5天左右的时间&#xff0c;为大家每个人准备了一份神秘的新年礼物&#xff0c;想不想知道是什么吗&#xff1f;必看那么…

行动力决定了一个人的成败,有想法,就去做! C#的内存管理原理解析+标准Dispose模式的实现

尽管.NET运行库负责处理大部分内存管理工作&#xff0c;但C#程序员仍然必须理解内存管理的工作原理&#xff0c;了解如何高效地处理非托管的资源&#xff0c;才能在非常注重性能的系统中高效地处理内存。C#编程的一个优点就是程序员不必担心具体的内存管理&#xff0c;垃圾回收…

让面试官颤抖的 HTTP 2.0 协议面试题

转载自 让面试官颤抖的 HTTP 2.0 协议面试题 Http协议&#xff0c;对于拥有丰富开发经验的程序员来说简直是信手拈来&#xff0c;家常便饭。虽然天天见&#xff0c;但是对于http协议的问题&#xff0c;可能很多人在没有积极准备的情况下&#xff0c;不一定能很好的回答出来。…

一步步学习EF Core(3.EF Core2.0路线图)

前言 这几天一直在研究EF Core的官方文档,暂时没有发现什么比较新的和EF6.x差距比较大的东西.不过我倒是发现了EF Core的路线图更新了,下面我们就来看看 今天我们来看看最新的EF Core 2.0路线图 E文好的移步:https://github.com/aspnet/EntityFramework/wiki/Roadmap#ef-core…

Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。

转载自 Docker 核心概念、安装、端口映射及常用操作命令&#xff0c;详细到令人发指。 Docker简介 Docker是开源应用容器引擎&#xff0c;轻量级容器技术。 基于Go语言&#xff0c;并遵循Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移…

Build Tour 2017 中国站北京、上海报名了

微软于 5 月 10 日在总部西雅图举办的 Build 2017 大会上&#xff0c;发布了针对云计算、人工智能、Windows 以及混合现实平台等技术的一系列重要更新&#xff0c;这令众多来自企业、ISV、初创企业的开发者&#xff0c;学生开发者&#xff0c;以及技术爱好者兴奋不已。 为了帮助…

getOrDefault()和subList()

返回 key 相映射的的 value&#xff0c;如果给定的 key 在映射关系中找不到&#xff0c;则返回指定的默认值。

.NET Core类库项目中如何读取appsettings.json中的配置

这是一位朋友问我的问题&#xff0c;写篇随笔回答一下。有2种方法&#xff0c;一种叫丑陋的方法 —— IConfiguration &#xff0c;一种叫优雅的方法 —— IOptions 。 1&#xff09;先看丑陋的方法 比如在 RedisClient 中需要读取 appsettings.json 中的 redis 连接字符串&a…

js引擎执行代码的基本流程

js引擎执行代码的基本流程 先执行初始化代码: 包含一些特别的代码设置定时器绑定监听发送ajax请求后面在某个时刻才会执行回调代码