未来智讯 > 人脸语音识别论文 > 基于Delhi的驾校考试指纹识别系统设计

基于Delhi的驾校考试指纹识别系统设计

发布时间:2017-12-07 09:27:00 文章来源:未来智讯    
    【关键词】指纹识别;身份认证;Delphi语言
    指纹身份认证是利用人体指纹人皆不同和永恒不变的生物特征进行身份识别,将克服传统方法带来的不足。不同人的指纹不同,同一个人不同手指的指纹也不相同。且人的指纹终生不变,另外,由于生物特征是人体的一部分,无法更改和仿制,可见,指纹识别比传统的身份识别手段具有更高的可靠性和安全性。
    我国指纹识别技术发展相对于美国和日本要晚10到20年的时间,我国的指纹识别产品最早出现在上世纪90年代初期,当时仅限于刑侦领域,它可以提高公安机关破案率,同时节省了很多成本。到2004年,随着移动存储设备等数码类产品的大量使用,指纹技术与数码类产品结合应用的局面才铺开,现在,指纹识别技术已经广泛用于民用产业,在很多信息安全领域,甚至金融领域都出现了指纹技术应用方案。
    如今,驾校考试报名与管理系统也开始广泛应用指纹识别技术,通过对考生报名时登记和采集考生的指纹信息和照片信息,在进行桩考前进行指纹身份鉴定以保证其指纹身份的真实性,杜绝冒名考试、舞弊现象的发生。
    1.系统总体设计
    本文系统采用面向对象的编程工具Borland Delphi 2010语言和Biokey SDK 3.8开发包进行开发,Delphi语言以其基于窗口和面向对象的程序设计方法,采用Pascal的语法结构、高速的编译能力,以及强大的数据库和网络功能而著称。本文系统主要由以下两个部分组成:
    (1)考生报名指纹登记:在原来的学员报名学车、办理入学手续的基础上,增加指纹采集的过程。每名学员采集两枚平面指纹,并录入个人基本信息,包括姓名、性别、证件号等保存到驾校指纹数据库中,为考试的时候作比对用。
    (2)考生考试指纹比对:学员在学习完驾校全部课程后,由驾校安排进行上机考试,在驾校学员考试系统中,嵌入活体指纹模块,学员在开始进行考试前,要进行活体验证通过后才能进入考试系统答题,不能验证通过的拒绝考试答题系统答题,同时在进行桩考前考生必须预先进行指纹身份鉴定才能进入考场,否则考试成绩无效。
    (3)使用帮助:为使用者提供系统使用帮助,对登记、指纹比对的具体流程作了详细介绍,并及时解决使用者提出的问题。
    (4)系统维护:此模块为管理员对系统进行维护提供入口,也可通过网络对系统终端出现的问题进行查询,及时解决系统出现的故障。
    2.工作流程
    指纹仪初始化进入工作状态后,调用Begin Enroll处于登记指纹状态,调用Begin Capture处于指纹验证状态。控件的工作方式是基于事件驱动,触发事件的顺序参考下面。
    指纹登记一般需要按同一手指1-4次,然后由识别系统综合处理得到一个指纹登记模板,按压登记指纹次数由控件属性EnrollCount设置,达到设定次数后会触发OnEnroll和OnEnrollToFile事件。
    指纹验证时,按压手指后会触发OnCapture和OnCaptureToFile事件,此时可以调用VerFinger或者IdentificationInFPCacheDB进行比对。
    需要注意每次按压手指都会触发OnFea-tureInfo事件,如果按压手指的指纹模板质量不合格,则本次取像无效,需要重新按压手指
    3.系统开发的关键部分
    系统编程采用Delphi 2010语言,通过ADO连接数据库。开发过程中应用到了组件面板中的大量组件,包括ADOConnection、ADOQuery、ZKFPEngX等。
    3.1 指纹登记部分源代码
    Procedure TForm1.SaveFPData(AQuery:TADOQuery;AFingerID:Integer;AFPData:OleVariant);
    var
    templateasstring:widestring;
    begin
    templateasstring:=ZKFPEngX1.Encode Template1(AFPData);
    with AQuery do begin
    Close;
    SQL.Clear;
    SQL.Add('insert into zkFingerPrint (ID,Template,Name)values('+inttostr(AFingerID)+','''+templateasstring+''','''+EDFingerName.Text+''')');
    ExecSQL;
    end;
    End;
    说明:由于SDK中指纹模板是以Variant变量的方式保存和传递,其存储的是一维二进制字节数组,不能像字符串一样直接用SQL语句写入和读出,所以此处先利用EncodeTemplate将指纹模板转化成长字符串型,以便于将指纹信息写入到数据库中。
    3.2 指纹验证部分源代码
    Procedure TForm1.GetFPData(AQuery:TADOQuery;AFingerID:Integer;var AFPData:OleVariant);
    Var
    Templateasstring:widestring;
    Score,ProcessNum,ID,i1,i2,i3,i4:Integer;   Begin
    Templateasstring:=ZKFPEngX1.Encode Template1(AFPData);
    With AQuery do begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT*FROM zkFingerPrint');
    Open;
    //读取数据
    For i1:=1 to AQuery.RecordCount do
    Begin
    ZKFPEngX1.AddRegTemplateStrToFPCacheDB(fpcHandle,strtoint(AQuery.FieldByName('FingerID').AsString),AQuery.FieldByName('Template').AsString);
    i4:=AQuery.FieldByName('Finger ID').AsInteger;
    FFingerName.AddObject(AQuery.FieldByName('Name').AsString,TObject(i4));
    FFingerID.AddObject(AQuery.FieldByName('ID').AsString,TObject(i4));
    AQuery.Next;
    end;
    Score:=8;
    ID:=ZKFPEngX1.IdentificationFromStrInFPCacheDB(fpcHandle,ZKFPEngX1.GetTemplateAsString,Score,ProcessNum);
    If ID<>-1 then begin
    For i2:=0 to FFingerName.Count-1 do
    Begin
    i3:=Integer(FFingerName.Objects[i2]);
    if ID=i3 then begin
    i7:=FFingerName.Strings[i2];
    MessageDlg(Format(‘指纹匹配成功!姓名:%s准考证号:%s’,[FFingerName.Strings[i2],FFingerID.Strings[i2]]),mtInformation,[mbOK],0);
    end;
    end;
    end
    else MessageDlg(‘找不到匹配的指纹!’,mtwarning,[mbOK],0);
    ZKFPEngX1.RemoveRegTemplateFromFPCacheDB(fpcHandle,FID);
    FFingerName.Free;
    FFingerID.Free;
    FFingerName:=TStringList.Create;
    FFingerID:=TStringList.Create;
    Close;
    end;
    end;
    说明:先用EncodeTemplate函数将要验证的指纹模板转化成长字符串型,再将数据库中的指纹模板取到缓存fpcHandle中,用IdentificationFromStrInFPCacheDB函数将它们与要验证的指纹逐个比较,一旦指纹匹配,函数返回值将等于与其匹配的指纹的ID。
    4.系统的优势
    (1)指纹操作操作简洁方便、快速准确、节省人力。
    (2)安全性好,数据库原始数据无法修改,资料真实可靠。
    (3)由于指纹具有唯一性,伪造假指纹非常困难,这样就避免了代考等作弊行为的发生,保证了考试的公正。
    5.结束语
    指纹识别技术发展经过了较长的历史时期,其过程也随传感技术的发展而影响和推动。指纹技术在很多的领域都有广泛的应用,像指纹锁、指纹保险箱、指纹门禁等。指纹识别技术将更多的为我们的生活工作服务,为我们带来更安全的生活工作环境。
    参考文献
    [1]唱江华,等.Delphi面向对象程序设计教程[M].北京航空航天大学和出版社,2003:7.
    [2]王林玮,等.DELPHI 7数据库工程实用编程技术[M].2006
    [3]电脑编程技巧与维护杂志社.DELPHI编程典型实例解析[M].中国水利水电出版社,2007.
    [4]韩伟红,沈清,黄子中.微机上的指纹自动识别系统[J].微型电脑应用,1996(8):16-18.
    [5]李慧颍,傅德胜.微机指纹自动识别系统软件设计[J].计算机应用研究,2000(12):75-76.
    作者简介:刘超群(1990—),男,吉林榆树人,西安武警工程大学硕士研究生,研究方向:信息与信号处理。
转载请注明来源。原文地址:https://www.7428.cn/page/2017/1207/9006/
 与本篇相关的热门内容: