资源描述
摘要
随着科学技术的发展,指纹识别技术也在不断进步,并在各个领域有着广泛的应用。传统的使用图书卡等刷卡进入图书馆的方式已经不能满足越来越高的图书馆安全的需要,使用指纹识别技术能很大程度上增加图书馆的安全性和可靠性,开发一个使用指纹识别来判断读者身份的系统有很大的需求。本管理系统的开发使用VC++6.0开发工具,SQLServer2000数据库和指纹仪来实现指纹的采集、指纹数据存入数据库、指纹比对。进而运用该核心技术来记录读者进出图书馆的信息并生成相应的人员流动信息表,而且系统能对各个表进行查找、删除、增加、修改功能。由于指纹识别的唯一性和不可替代性使得系统对信息的采集和录入有着很高的可靠性和安全性。
关键词:生理识别 指纹识别 MIS
- 46 -
ABSTRACT
With the development of science and technology fingerprint recognition technology has also continued progress and in all fields have a wide range of applications. The use of traditional library card, and the way into the Library has been unable to meet the growing needs of library security, the use of fingerprint recognition technology can increase the library to a large extent the safety and reliability, the development of a use of fingerprint recognition readers to judge the identity of the system Have great demand.The management system for using VC + +6.0 development tools SQLServer2000 and Fingerprint equipment to achieve the collection of fingerprints fingerprint data in the database, fingerprint comparison. Then use the core technology to record the information which were readers access to library and generates the movement of information form, and the system can be carried out in various forms look for delete modify add function. As the only fingerprint recognition and not substitute the information system makes the collection and entry has a high reliability and security.
Key words: PhysicalIdentification Fingerprint Identification MIS
目录
摘要 I
ABSTRACT II
第1章 引言 1
1.1 前言 1
1.2 研究内容 1
第2章 开发工具的简介 3
2.1 SQL Server2000简介 3
2.2 Visual Studio 6.0简介 3
2.3 JZT-969A指纹仪简介 4
第3章 图书馆人员流动管理系统的分析与设计 6
3.1 需求分析 6
3.2 数据库设计 6
3.3 系统模块设计 11
3.3.1 指纹登记模块 11
3.3.2管理员登录模块 11
3.3.3学生信息模块 11
3.3.4教师信息模块 11
3.3.5员工信息模块 11
3.3.6管理员信息模块 12
3.3.7指纹信息录入模块 12
3.3.8读者流动信息模块 12
3.3.9员工出勤信息模块 12
第4章 JZT-969A指纹仪SDK开发包简介 14
4.1 基本术语的解释 14
4.1.1 采样 14
4.1.2 指纹模板 14
4.1.3 样本 14
4.1.4 登记 14
4.1.5 验证 14
4.1.6 鉴别 14
4.1.7 指纹传感器 14
4.2 JZT-969A-SDK开发包的组成 15
4.3 设备驱动类API接口函数库 15
4.3.1 GFP_GetImage 函数 15
4.3.2 GFP_CheckFinger 函数 16
4.4指纹算法类API 接口函数库 17
4.4.1 GFP_Extract 函数 17
4.4.2 GFP_Enroll 函数 18
4.4.3 GFP_Verify 函数 18
4.4.4 GFP_Search 函数 19
第5章 图书馆人员流动系统的功能实现 20
5.1 系统主界面的设计和功能实现 20
5.2 读者信息管理界面的设计和功能实现 25
5.2.1 学生信息管理的界面设计和功能实现 25
5.2.2 教师信息管理的界面设计和功能实现 29
5.2.3 员工信息管理的界面设计和功能实现 29
5.2.4 管理员信息管理的界面设计和功能实现 30
5.3指纹信息录入的界面设计和功能实现 31
5.4 管理员登录和注销的界面设计和功能实现 34
5.5 读者流动信息的界面设计和功能实现 36
5.6 员工出勤情况界面的设计和功能实现 37
第6章 数据库的连接和动态链接库的装载 39
6.1 数据库的连接 39
6.1.1 ADO的介绍 39
6.1.2 连接SQL Server2000的具体步骤 40
6.1.3 动态链接库简介 42
6.1.4 指纹设备驱动的装载和指纹算法动态连接库的装载 43
第7章 结束语 44
致谢 45
参考文献 46
第1章 引言
1.1 前言
目前在许多院校的图书馆管理系统中大都使用借阅证条形码技术对读者信息进行管理对读者的身份认证则使用传统的人工识别模式即由图书管理人员人工识别借阅者身份盗用和误用他人证件借书或因丢失证件而无法及时借阅的事件时有发生给图书馆藏书和读者借阅带来损失和困难。因此在图书馆借阅系统中建立一套行之有效的读者身份认证成为图书馆管理部门急待解决的问题。故身份识别已成为人们日常生活中经常遇到的一个问题而传统身份识别方法正越来越受到局限。人体的生物特征如指纹、瞳孔、角膜等均具有不可复制的唯一性。用它们来识别人的身份是最安全、最可靠、最方便的方法也是当今社会正在研究的最高级别的保安密码锁系统。在这些生物特征种类中指纹具有唯一性、稳定性、再生性等特点而且指纹信息量丰富使用非常方便、快速能比较好地实现监控和无监控操作易于实现一比一比对和一比多比对。因此指纹识别技术为现代身份识别提供了一个很好的解决方案。
随着科学技术的飞速发展,指纹识别技术越来越成熟,由于指纹算法的改进使得出错率越来越低,安全性越来越高。用指纹技术开发的身份识别系统受到越来越多的支持,这种使用者身份确认的依据与使用者本人不可分离的特性提供了更为安全的人员流动记录系统。
随着人员流动记录系统的发展,人员流动记录系统作为高科技安全设施具有安全、可靠、方便等性质近几年在国内得到广泛的普及。在注重商业情报和安全的今天,对进出一些重要机关、科研实验室、档案馆、以及关系到国计民生的公用单位的控制中心、民航机场等场所的工作人员,给予进出授权控制,这一切都离不开人员流动记录系统。
1.2 研究内容
设计开发一个比较实用的图书管人员流动记录系统是本毕业设计的工作要求。可以通过录入指纹,识别指纹,记录读者进馆的信息,和根据流动信息生成读者流动信息表和员工当天考勤表的功能,提高图书馆的管理效率,利用指纹技术有利于图书馆的安全管理,基本达到人员流动记录系统的管理和安全要求。
基于指纹识别的图书馆人员流动记录系统是在Windows XP Professional开发环境下,使用Visual C++ 6.0开发工具和Microsoft SQL Server 2000数据库管理系统,结合JZT-969A指纹仪开发的一个记录图书馆人员流动的系统。主要是用到了Visual C++ 6.0的MFC基于基本对话框的编程,通过建立不同的对话框来创建各个子窗口,使用SQL Server 2000来创建数据库,建立各张表及设置表的字段和各字段的属性,使用指纹仪来采集指纹数据,调用指纹动态链接库掉用相应的函数来处理指纹数据得到指纹特征数据,将指纹特征数据转换成字符串存入数据库相应表中,再从数据库表中读取指纹字段的数据转换为指纹特征数据进行指纹比对。通过以上方式基本可以实现应用程序窗体的建立和后台数据库的建立,实现指纹数据的采集和指纹比对等等。
第2章 开发工具的简介
2.1 SQL Server2000简介
Microsoft SQL Server 2000 是Microsoft 公司推出的SQL Server 数据库管理系统,能提供超大型系统所需的数据库服务。大型服务器可能有成千上万的用户同时连接到 SQL Server 2000 实例。SQL Server 2000 为这些环境提供了全面的保护,具有防止问题发生的安全措施,例如,可以防止多个用户试图同时更新相同的数据。SQL Server 2000 还在多个用户之间有效地分配可用资源,比如内存、网络带宽和磁盘 I/O。可以在一台计算机上运行多个 SQL Server 2000 实例。例如,一个为其它许多组织提供数据库服务的组织可为每个客户组织单独运行一个 SQL Server 2000 实例,而全部实例可集中在一台计算机上。这样,既隔开了每个客户组织的数据,同时又使服务组织只需管理一台服务器计算机从而减少了费用。
2.2 Visual Studio 6.0简介
Visual C++ 6.0是Microsoft公司于1998年推出的基于Windows系统的优秀的集成开发环境。它是一个可视化的C++集成开发环境,它使用了Windows图形用户界面的许多先进特性和设计思想,采用了面向对象语言,是一种方便快捷的Windows应用程序开发工具。再加上Microsoft公司为Visual C++ 6.0开发的功能强大的MFC,使得用Visual C++ 6.0语言编写的应用程序与其他开发语言相比,具有尺寸小、速度快、效率高等优势。
Visual C++ 6.0的最大特点是提供了对面向对象技术的支持,它利用类把大部分与用户界面设计有关的Windows API函数封装起来,通过MFC类库的方式提供给开发人员,大大提高了程序代码的重用性。
Visual C++ 6.0提供了一个功能强大的AppWizard,它能帮助用户自动生成一个运行程序框架,用户只需要在该框架的适当部分添加扩充代码就可以得到一个满意的应用程序。
Visual C++ 6.0还提供了一个强大的工具ClassWizard,用户通过它可以方便有效地使用和管理MFC类库。
Visual C++ 6.0的“所见即所得”的程序界面设计方式,大大减轻了程序设计人员的劳动强度,提高了开发效率。
2.3 JZT-969A指纹仪简介
JZT-969A 指纹仪是浙江维尔科技有限公司金指通系列指纹应用产品中的一员。JZT-969A指纹仪采用电容式半导体指纹传感器、USB2.0接口,和配套的应用软件一起使用,可以在您的系统中增加指纹身份识别的功能,保证您系统的安全;使用配套的JZT-969A-SDK开发包,可以将指纹应用嵌入到您开发的应用系统中。
JZT-969A指纹仪示意图如图2-1:
2-1指纹仪示意图
①指纹传感器
指纹传感器是JZT-969A 指纹仪进行指纹图像采集的部件,JZT-969A 指纹仪采用的是电容式指纹传感器。将手指平放在指纹传感器上,启动指纹仪,即可采集到手指的指纹图像;为达到良好的指纹图像采集效果,防止指纹传感器被损坏,在使用指纹传感器,请您注意以下事项:
采集指纹图像时,请将手指平放在指纹传感器的表面:
1、严禁使用指甲等硬物刮擦指纹传感器表面,否则可能导致指纹传感器
物理损坏;
2、手指要干净;
3、保持指纹传感器表面干净;
4、切勿进水。
②操作指示灯
操作指示灯是用来指示指纹仪的工作状态。目前有两种工作状态:常亮表示指纹仪正常等待接受上位机的命令;指示灯闪烁表示指纹仪需要采集指纹。
③USB连线
USB 连接线是指纹仪连接到的计算机的接口,计算机也是通过这根连线与指纹仪进行通信的。
第3章 图书馆人员流动管理系统的分析与设计
3.1 需求分析
随着图书馆的发展,图书馆书籍的增大和读者的增多,图书馆的安全措施显得越来越重要,而学技术的飞速发展,指纹识别技术的日趋成熟,使用指纹技术来识别身份有着越来越高的优势。随着指纹算法的改进使得出错率越来越低,安全性越来越高,用指纹技术开发的身份识别系统受到越来越多的支持,这种使用者身份确认的依据与使用者本人不可分离的特性使得系统的使用更为简便和图书馆的更加安全。
通过调查,系统有一下需求:
1.设置系统框架界面,分为指纹采集界面,管理员登录界面,管理员操作界面,读者流动信息界面,员工考勤信息界面。
2.指纹采集,实现采集过来的指纹存储到数据库中。
3.指纹比对,实现从数据库读取的指纹数据与采集来的指纹数据进行比对。
4.系统界面的功能设置,根据每个模块的功能进行功能设置。
5.数据库设计,创建数据库和需要的各个表。
6.指纹采集界面的功能,可以进行指纹的录入和具体身份的录入。
7.管理员登录界面的功能,识别管理员的指纹。
8.管理员操作界面的功能,对读者用户信息的查询,删除和修改。
9.根据图书馆人员流动情况,生成读者记录表和员工考勤表。
3.2 数据库设计
在SQL Server 2000中创建数据库Libmovementrecords,在此数据库中创建各张表。
以下是根据图书馆的人员划分而设计的各张表:
1、学生信息表:读者编号,学生学号(主键),姓名,性别,系别,班级,联系方式。详细信息见表3-1 学生信息表(StudentT)。
2、教师信息表:读者编号,教师编号(主键),姓名,性别,系别,职称,联系方式。详细信息见表3-2 教师信息表(TeacherT)。
3、图书馆员工信息表:读者编号,员工编号(主键),姓名,性别,联系方式。详细信息见表3-3 图书馆员工信息表(StaffT)。
4、图书馆管理员信息表:读者编号,管理员编号(主键),姓名,性别,管理员密码,联系方式。详细信息见表3-4 图书馆管理员信息表(ManagerT)。
5、读者指纹信息表:读者编号,读者指纹,姓名,表名。详细信息见表3-5 读者指纹信息表(FingerprintInfoT)。该表主要是为了加快搜索速度而设置的,起到索引的作用。当系统获取录入的指纹信息时,先搜索该读者是属于哪张表的,再根据读者编号在该表进行搜索。当数据库表的内容越来越多的时候,这种搜索效率就会有明显的提高。
6、读者记录表:入管时间(主键),读者编号,姓名,身份,联系方式。详细信息见表3-6 读者记录表(ReaderTimeRecordT)。
7、员工记录表:签到时间(主键),读者编号,员工编号,姓名,联系方式。详细信息见表3-7 员工考勤表(StaffTimeRecordT)。
表3-1 学生信息表(StudentT)
编号
字段名称
数据类型
长度
说明
1
ReaderID
varchar
10
读者编号
2
StudentID(主键)
varchar
9
学号
3
Name
nvarchar
10
姓名
4
Sex
nchar
2
性别
5
Department
nvarchar
50
系别
6
Class
nvarchar
50
班级
7
ContectTel
nvarchar
50
联系方式
表3-2 教师信息表(TeacherT)
编号
列名
数据类型
长度
说明
1
ReaderID
varchar
10
读者编号
2
TeacherID(主键)
varchar
9
教师编号
3
Name
nvarchar
10
姓名
4
Sex
nchar
2
性别
5
Department
nvarchar
50
部门
6
Duty
nvarchar
50
职务
7
ContectTel
nvarchar
50
联系方式
表3-3 图书馆员工信息表(StaffT)
编号
列名
数据类型
长度
说明
1
ReaderID
varchar
10
读者编号
2
StaffID(主键)
varchar
9
员工编号
3
Name
nvarchar
10
姓名
4
Sex
nchar
2
性别
5
ContectTel
nvarchar
50
联系方式
表3-4 图书馆管理员信息表(ManagerT)
编号
列名
数据类型
长度
说明
1
ReaderID
varchar
10
读者编号
2
ManagerID(主键)
varchar
9
管理员编号
3
Name
nvarchar
10
姓名
4
Sex
nchar
2
性别
5
Password
nvarchar
10
密码
6
ContectTel
nvarchar
50
联系电话
表3-5 读者指纹信息表(FingerprintInfoT)
编号
列名
数据类型
长度
说明
1
ReaderID(主键)
varchar
10
读者编号
2
Fingerprint
varchar
512
指纹特征数据
3
Name
nvarchar
50
姓名
4
TName
nvarchar
50
表明
表3-6 读者记录表(ReaderTimeRecordT)
编号
列名
数据类型
长度
说明
1
ReaderTime(主键)
varchar
20
进出管时间
2
ReaderID
varchar
9
读者编号
3
Name
nvarchar
10
姓名
4
Status
nvarchar
10
身份
5
ContectTel
nvarchar
50
联系方式
表3-7 员工考勤表(StaffTimeRecordT)
编号
列名
数据类型
长度
说明
1
StaffTime(主键)
varchar
10
签到时间
2
ReaderID
varchar
10
读者编号
3
StaffID
nvarchar
50
员工编号
4
Name
nvarchar
50
姓名
5
ContectTel
nvarchar
50
联系方式
各表之间的E-R图如图3-1图书馆人员流动记录系统的基本E-R图:
图3-1 图书馆人员流动记录系统的基本E-R图
图3-2 读者进入图书馆的数据流图
3.3 系统模块设计
3.3.1 指纹登记模块
该模块是图书馆人员流动系统的主要模块,实现读者进入图书馆时对读者进行指纹采集和识别,将采集来的指纹特征与数据库中的读者指纹信息表(FingerprintInfoT)的指纹特征数据(Fingerprint)字段进行比对,如果指纹比对成功则显示读者信息并将读者信息与当前的系统时间放到数据库的读者记录表(ReaderTimeRecordT)中。如果指纹比对失败,则提示联系管理员,将自己的指纹信息存入数据库。
3.3.2管理员登录模块
该模块主要实现对管理员身份的识别,可以选择以管理员密码进行登录或管理员指纹进行登录。当管理员遗忘了登录密码时,可用指纹进行登录;当管理员由于某种原因而不在图书馆,而且当时急需处理某种信息,比如录错了读者的指纹信息或者漏录了读者的指纹信息等,管理员可以委任某工作人员给予管理员密码进行登录。
3.3.3学生信息模块
该模块主要功能是实现管理员对学生信息的录入、查询、修改、删除等功能。当有新生注册时要录入新生的信息;当需要查看某某学生的详细信息时,可以按学生的读者编号(唯一),学生学号(唯一)或学生姓名进行精确查询;当发现学生信息输入有误时,可对该信息进行修改;当某某学生因为退学等等其他原因时,可将该学生信息进行删除。
3.3.4教师信息模块
该模块主要功能是实现管理员对教师信息的录入、查询、修改、删除等功能。当学校聘请新的教师时要对新教师的信息入库;当需要查看某某教师的详细信息时,可以按教师的读者编号(唯一),教师编号(唯一)或教师的姓名进行精确查询;当发现教师信息输入有误时,可对该信息进行修改;当教师因为某种原因离开学校时,可将该教师信息进行删除。
3.3.5员工信息模块
该模块主要功能是实现管理员对员工信息的录入、查询、修改、删除等功能。当图书馆聘请新的员工时要对新员工的信息入库;当需要查看某员工的详细信息时,可以按员工的读者编号(唯一),员工编号(唯一)或员工的姓名进行精确查询;当发现员工信息输入有误时,可对该信息进行修改;当员工因为某种原因离开图书馆,不在图书馆工作时,可将该员工信息进行删除。
3.3.6管理员信息模块
当图书馆任命某某为新的管理员时要对新管理员的信息入库;当需要查看某管理员的详细信息时,可以按管理员的读者编号(唯一),管理员编号(唯一)或管理员的姓名进行精确查询;当发现管理员信息输入有误时,可对该信息进行修改;当管理员因为某种原因不拥有管理员职责时,可将该管理员信息进行删除。
3.3.7指纹信息录入模块
该模块主要功能是实现对没有录入数据库的指纹信息入库。使用指纹仪采集指纹特征数据和读者的主要身份信息保存到读者指纹信息表(FingerprintInfoT)中。
3.3.8读者流动信息模块
该模块主要功能是将指纹登记模块中获取的读者流动情况进行保存并显示和查询。当查询读者流动信息时,可以按读者的读者编号(唯一)在读者记录表(ReaderTimeRecordT)中查询该读者的图书馆进出情况。
3.3.9员工出勤信息模块
该模块主要功能是将读者流动信息模块获得的读者记录表(ReaderTimeRecordT)中提取出员工记录信息并可以查询员工历史记录和员工当天的记录信息。当需要查询某个员工的出勤情况时,可以按员工的读者编号(唯一),员工编号(唯一)和员工姓名进行查询。
图3-3 图书馆人员流动记录系统的功能模块图
第4章 JZT-969A指纹仪SDK开发包简介
4.1 基本术语的解释
4.1.1 采样
所谓“采样”指示一种操作,这种操作利用指纹身份鉴别设备,对手指的指纹进行扫描,获取指纹图像,然后通过指纹图像处理算法提取指纹图像的固有属性。
4.1.2 指纹模板
所谓“模板”通常用来表示一种生物统计登记数据。将模板与使用者的“样本(Sample)”进行匹配,允许有一定的误差,可以证明使用者是否其所声称的那个人。
4.1.3 样本
所谓“样本”是通过采样获得的指纹固有特性,也可称为指纹特征。这种样本可以作为模板的生成源,也可以作为模板的比对源。
4.1.4 登记
所谓“登记”指示一种操作,这种操作需要进行三次指纹采样,然后按照一定的算法产生出指纹模板。
4.1.5 验证
所谓“验证”指示一个操作,该操作利用指纹身份鉴别设备进行指纹采样,然后将产生的样本与登记时保存的指纹模板进行匹配,以证明应用人是其所声称的那个人。
4.1.6 鉴别
与“验证”不同,“鉴别”在采样完成后,将样本与一系列的指纹模板进行匹配,然后给出最近匹配列表,以便从中确定某个人是谁。
4.1.7 指纹传感器
指纹传感器指指纹身份鉴别设备中专门进行指纹图像采集的部件,是指纹身份鉴别设备的重要组成部分之一。
4.2 JZT-969A-SDK开发包的组成
JZT-969A-SDK 开发包由API 接口函数库和范例程序组成。其中,API 接口函数库由设备驱动类接口函数库和指纹算法类接口函数组成。设备驱动类接口函数库和指纹算法类接口函数库均以Windows 动态链接库的方式提供给用户。其中设备驱动类API 接口函数库包含在两个动态链接库中,动态链接库的库名分别为GFP_JZT_969A.dll和EasyUSB214x.dll。指纹算法类API 接口函数库包含在一个动态链接库中,动态链接库的库名为GFP_V12_All.dll。用户在使用上述的API 接口函数库开发指纹应用程序时,必须将上述三个动态链接库拷贝到应用程序目录或Windows的共享目录下。
在JZT-969A-SDK 开发包中包含一个使用C++ Builder6.0 编写的范例程序,在范例程序中给出了API 接口函数库中API 接口函数的调用方法。在指纹仪驱动程序安装成功后(注:指纹仪驱动程序的安装方法将手册《JZT-969A 指纹仪用户手册》),运行范例程序GFP_Dll_Test.exe,可以完成指纹图像的采集、指纹登录、指纹验证和指纹搜索的功能。使用C++ Builder6.0开发工具,可以打开范例程序的工程,对范例程序进行修改和重新编译。
4.3 设备驱动类API接口函数库
设备驱动类API 接口函数库的API 接口函数封装在GFP_JZT_969A.dll 和EasyUSB214x.dll两个动态链接库中。API接口函数库包含如下的接口函数,见下表4-1设备驱动类API接口函数表。
表4-1设备驱动类API接口函数表
函数名
功能
GFP_GetImage
从指纹仪获取一幅指纹图像
GPF_CheckFinger
根据获取的指纹图像进行运算,判断手指是放下还是抬起
4.3.1 GFP_GetImage 函数
1、GFP_GetImage 函数功能
GFP_GetImage 函数通过USB 接口从指纹仪读取一幅指纹图像。GFP_Image 函数的内部处理流程如下:
(1)当调用GFP_GetImage 函数时,上位机首先发送命令给指纹仪要求建立连接,如果建立连接失败则函数错误返回,如果建立连接成功,则进行下面的操作;
(2)上位机发送获取指纹图像命令给指纹仪,指纹仪在接收到获取指纹图像命令后,启动指纹传感器,采集一幅指纹图像,并将指纹图像发送给上位机,上位机接收指纹图像,在校验指纹图像数据无误时,函数正常返回;
(3)如果指纹仪在规定的时间内没有给出应答,则函数出现超时错误。
2、GFP_GetImage 函数功能接口说明
函数原形:int GFP_GetImage(unsigned char *cpImage, int *iImgLen)
函数功能:驱动指纹仪采集一幅指纹图像
入口参数:无
出口参数:
cpImage:返回获取的指纹图像的缓冲区的指针;
iImgLen:返回获取的指纹图像的字节数。
函数返回:
返回 0:表示指纹图像采集成功;
返回-1:表示检测不到指纹仪;
返回-2:表示采集指纹图像失败;
返回-3:表示命令校验错误;
返回-4:表示命令超时。
4.3.2 GFP_CheckFinger 函数
1、GFP_CheckFinger 函数功能
GFP_CheckFinger 函数根据传入的指纹图像,判断手指是放下还是抬起。在使用该函数前,必须首先使用GFP_GetImage 函数获取手指的指纹图像,然后根据指纹图像判定手指的按下还是抬起。
2、GFP_CheckFinger 函数功能接口说明
函数原形:int GFP_CheckFinger(unsigned char *cpImage, int ithvalue)
函数功能:根据传入的指纹图像,判断设备的按下还是抬起
入口参数:
cpImage:指纹图像的缓冲区的指针;
ithvalue:判断的阀值,标准取值为80
值越大要求手指和指纹传感器的接触面积要求越大。
出口参数:无
函数返回:
返回 0:表示手指已经按下,并且采集到足够大面积的指纹图像;
返回 1:表示手指没有按下或采集指纹图像的面积不够;
4.4指纹算法类API 接口函数库
指纹算法类API接口函数库的API接口函数封装在GFP_V12_All.dll动态链接库文件中。指纹算法类API接口函数库包含如下的接口函数,见下表3-2指纹算法类API接口函数表。
表4-2指纹算法类API接口函数表
函数名
功能
GFP_Extract
根据指纹图像,提取指纹特征
GFP_Enroll
根据三个指纹特征,合成指纹模板
GFP_Verify
进行两枚指纹特征/模板一对一的比对
GFP_Search
在指纹模板库中进行指纹搜索
4.4.1 GFP_Extract 函数
1、GFP_Extract 函数功能
GFP_Extract 函数完成指纹图像到指纹特征的转换。调用GFP_Extract 函数时,对输入的指纹图像进行处理,最终生成指纹特征。需要说明的是,如果图像的质量比较差,提取指纹特征时可能失败。
2、GFP_Extract 函数功能接口说明
函数原形:int GFP_Extract(unsigned char *cpImage, unsigned char *cpFeature, unsigned long *ipSize)
函数功能:根据指纹图像提取指纹特征
入口参数:
cpImage:指纹图像的缓冲区的指针;
出口参数:
cpFeature:返回提取的指纹特征
ipSize:返回指纹特征数据的长度(字节数)
函数返回:
返回 0:表示指纹特征提取成功;
返回-1:表示指纹特征提取失败;
4.4.2 GFP_Enroll 函数
1、GFP_Enroll 函数功能
GFP_ Enroll函数完成指纹模板的合成。调用GFP_Enroll函数时,对输入的三枚指纹特征进行合成,合成指纹模板时,要验证三枚指纹特征是否来自同一枚手指,最终生成指纹模板。
2、GFP_Enroll 函数功能接口说明
函数原形:int GFP_ Enroll(unsigned char **cpFeaturesGroup,unsigned char *cpFeature,unsigned long *ipSize)
函数功能:根据三枚指纹特征,合成提取指纹模板
入口参数:
cpFeaturesGroup:指纹特征数据;
出口参数:
cpFeature:返回提取的指纹特征
ipSize:返回指纹特征数据的长度(字节数)
函数返回:
返回 0:表示指纹模板合成成功;
返回-1:表示指纹模板合成失败;
4.4.3 GFP_Verify 函数
1、GFP_Verify 函数功能
GFP_Verify函数完成两枚指纹特征/模板的比较。调用GFP_Verify函数时,按照指定的安全级,对输入的两枚指纹特征/模板进行比较,返回比较的结果。
在进行指纹比对时,通过运算计算两枚指纹特征/模板的相似度,相似度值越大,两枚指纹特征/模板来源于同一每手指的概率越大。所以在指纹比对时要指定一个安全级。在本函数中,安全级的取值从0 到9,取值越大,安全级越高。当安全级的取值为0 时,任何两枚手指比较均能成功。建议使用安全级3。
2、GFP_Verify 函数功能接口说明
函数原形:int GFP_Verify (unsigned char *cpFeatures1,unsigned char *cpFeatures2,int iSecurityLevel)
函数功能:按照指定的安全级,进行指纹特征/模板的比对
入口参数:
cpFeatures1、cpFeatures2:待比对的指纹特征/模板数据;
iSecurityLevel:指纹比对的安全级,取值范围为0-9,建议取3。
出口参数:无
函数返回:
返回 0:表示指纹比对成功;
返回-1:表示指纹比对失败;
4.4.4 GFP_Search 函数
1、GFP_Search 函数功能
GFP_Search函数将指纹特征在指纹模板库中指纹模板逐个进行比对,如果比较成功,则返回比较成功指纹模板在指纹模板库中的索引(如果指纹模板库中有N 个指纹模板,则返回值从0 - N-1)。如果搜索不到,则返回-1。
2、GFP_Search 函数功能接口说明
函数原形:int GFP_Search(unsigned char * cpFeatures,unsigned char ** cpFeaturesGroup,int iNumber,int iSecurityLevel)
函数功能:将给定的指纹特征和指纹模板库中的指纹模板进行逐个比较,如果比较成功,返回索引号,否则返回-1。
入口参数:
cpFeatures:待比对的指纹特征;
cpFeaturesGroup:指纹模板库;
iNumber:指纹模板库中的指纹模板数量;
iSecurityLevel:指纹比对的安全级,取值范围为0-9,建议取3。
出口参数:无
函数返回:
返回 >=0:表示指纹搜索成功,返回比对成功模板在模板库中索引;
返回-1:表示指纹比对失败;
第5章 图书馆人员流动系统的功能实现
5.1 系统主界面的设计和功能实现
用MFC App Wizard(exe)建立一个基于对话框类型的工程,命名为LibReaderTimeRecord,系统会自动生成一个初始化的对话框,就是系统父对话框。为对话框添加Menu,右击资源区的Menu,选择Insert Menu将其ID修改为IDR_MAIN _MENU。编辑Menu包括各个ID的设置,将原始ID名修改为自己可以辨认的ID名,然后使用MFC Class Wizard为Menu的各个ID响应COMMAND事件,生成信息响应函数。创建子对话框IDD_FNGERPRINT_RECORD_DLG,用来记录读者的指纹,显示系统时间,显示读者的主要信息。子对话框如图5-1所示。
图5-1 系统初始界面对话框
编辑完后的Menu纵向视图,如图5-2所示。
图5-2 系统主界面菜单
图书馆人员流动记录系统运行后的界面,如图5-3所示。
图5-3 系统主界面
图5-4 系统流程图
程序中系统时间的显示主要是运用了定时器(Timer),子对话框IDD_FNGERPRINT_RECORD_DLG创建对话框类CaccessRecordDlg,实现代码如下:
int CAccessRecordDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
// TODO: Add your spe
展开阅读全文