解决方案:使用中控指纹采集器开发指纹识别案例

优采云 发布时间: 2022-12-22 01:20

  解决方案:使用中控指纹采集器开发指纹识别案例

  开启掘金成长之旅!今天是我参加“掘金每日新计划·12月更新挑战赛”的第13天,点击查看活动详情

  这两天正好有点琐碎,于是翻出两年前没开发的指纹识别项目继续写。

  操作环境:

  1、中控指纹采集器

  2.Win10操作系统

  3..netframework4.0

  4.sqlserver2008及以上版本

  源码已上传至微信公众号【雄雄的小课堂】,回复“指纹识别源码获取”即可下载。

  指纹识别项目操作流程

  1个

  用户注册:输入用户名、密码并采集完整的三遍指纹。

  2个

  用户登录:注册时输入用户名,注册时使用指纹即可登录成功。

  3个

  采集指纹时,需要3次相同,否则提示采集失败

  4个

  登录时用户名和指纹需要对应,如果不对应会提示登录失败,采集器红灯闪烁并有提示音

  指纹识别项目中的部分截图

  1.注册页面

  2.登录页面

  3.如果没有指纹识别采集器,提示:

  4. 三个指纹采集成功:

  5、登录成功:

  6、登录失败:

  部分代码

  采集代码

  /// 

       /// 采集指纹

       /// 

       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(如果有困难,您也可以使用其它手指)……");

               }

               catch

               {

                   MessageBox.Show("出现异常");

               }

           }

           else

           {

               MessageBox.Show("请买个指纹采集仪", "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);

           }

       }

复制代码

  将指纹登记特征模板保存到指纹识别缓存空间,并显示指纹登记结果

          /// 

       /// 将指纹登记特征模版保存到指纹识别高速缓冲空间,并显示指纹登记结果

       /// 

       /// 

<p>

       /// 

       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);

           }

       }

复制代码</p>

  获取指纹初始特征,0:指纹特征好 1:特征点不够

         /// 

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

       /// 

       /// 

       /// 

       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) + " 次!";

                   }

               }

<p>

           }

           ShowMsgInfo(strTemp);

       }

复制代码</p>

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

         /// 

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

       /// 

       /// 

       /// 

       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;

       }

复制代码

  指纹比对和键码控制声光

            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);

           }

复制代码

  整个操作过程视频

  的

  解决方案:如何用shell脚本实现数据文件的自动采集

  Shell脚本生成.txt数据文件

  shell脚本生成.txt数据文件,shell脚本生成.txt数据文件

  

  Shell脚本采集系统cpu、内存、磁盘、网络信息

  Shell 脚本采集系统 cpu、内存、磁盘和网络信息。 很多朋友不知道如何使用shell脚本来采集Linux系统的信息,包括cpu、内存、磁盘、网络等信息。 在这里,小编就为大家讲解一下,一起来看看吧。 1. CPU信息采集1)、 采集 CPU使用率采集算法:通过/proc/stat文件采集并计算CPU总使用率或单核使用率。 以cpu0为例,算法如下:1234...

  xml分页php采集,ocean cms自动采集脚本可以分页

  

  本文提供shell脚本代码,可根据linux和Windows扩展支持分页采集,无需python3支持; #!/bin/bash############################################ #################程序名称:Ocean CMS自动采集脚本#版本信息:sea cms bot /2.0#使用方法:直接将代码复制到宝塔的shell脚本内容计划任务并添加每小时任务使用#...

  用于监视服务器状态的 Shell 脚本

  shell编写的脚本,用于采集系统主机信息,包括CPU、内存、磁盘和网络信息。 可自行设置采集频率,自动将采集的信息通过FTP上传至数据库服务器,生成SQL脚本存储。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线