指纹采集器Live 20R
最近有个项目需要使用指纹采集器Live 20R,买来这个小玩意后不知道怎么用,看了一些教程和自己摸索了一下,才初步掌握了用的方法。
环境:
- 硬件:联想 小新
- 操作系统:Win 10
- IDE:VS2019
下载SDK包 运行Demo
首先插上Live 20R后,电脑没什么反应,可以在“设备和打印机”中看到Live 20R是已经连接到了电脑上来,但是由于缺少驱动程序,因此当你双击Live 20R的图标时,电脑会提醒你该设备没有驱动程序,这个驱动程序需要我们自己去官网上进行安装。
接着需要去官网上下载开发包,链接如下:
https://www.zkteco.com/cn/download_catgory.html
可以看到下面的SDK开发包,分为Windows和Android,由于我的环境是Win 10,因此下载红框圈主的windows开发包。
下载下来后首先运行setup.exe安装驱动程序
当安装完毕后,我们再次打开“设备与打印机”。
发现已经不提示缺少驱动程序了,而是该设备运转正常。
之后再次进入官网下载的开发包里面,这里面提供了几种不同语言写的demo程序和一些依赖库文件,我们打开C语言的示例程序,可以看到是MFC程序,非常老了(为了运行,我又在自己的VS2019里面重新装了一下对MFC的支持),可以看到大概运行起来就是下图这个样子,手指按上去,可以获得手指的灰度图(出于安全考虑打了一部分码 🤣)。同时Demo还提供了验证指纹图像是否一致等功能,里面代码还是值得好好研究的😀。
分析代码 自主创业
第一步添加头文件和库文件
在代码中将include的头文件都包含进来
#include "libzkfp/include/zkinterface.h"
#include "libzkfp/include/libzkfperrdef.h"
#include "libzkfp/include/libzkfptype.h"
#include "libzkfp/include/libzkfp.h"
可以看到库文件有两个x64为64位的库文件,x86为32位的库文件,因此我们通过添加下面这句,来添加库文件
#ifdef _WIN64
#pragma comment(lib, "libzkfp/x64lib/libzkfp.lib")
#else
#pragma comment(lib, "libzkfp/x86lib/libzkfp.lib")
#endif
第二步 编写代码
-
定义设备句柄
HANDLE device_handle;
-
初始化设备
if (ZKFP_ERR_OK != ZKFPM_Init()) { //initialize resource cout << "error in zkfpm_init\n"; }
-
打开设备
if ((device_handle = ZKFPM_OpenDevice(0)) == NULL) {//open the device cout << "error in zkfpm_openDevice\n"; ZKFPM_Terminate(); return 0; }
-
获取参数:指纹图像的宽和高
int m_imgFPWidth; int m_imgFPHeight; unsigned char szTemplate[MAX_TEMPLATE_SIZE]; unsigned int tempLen = MAX_TEMPLATE_SIZE; unsigned int size = 4; ZKFPM_GetParameters(device_handle, 1, (unsigned char*)&m_imgFPWidth, &size); size = 4; ZKFPM_GetParameters(device_handle, 2, (unsigned char*)&m_imgFPHeight, &size);
-
获取指纹
unsigned char* m_pImgBuf = new unsigned char[m_imgFPWidth * m_imgFPHeight]; int ret = ZKFPM_AcquireFingerprint(device_handle, m_pImgBuf, m_imgFPWidth * m_imgFPHeight, szTemplate, &tempLen); while (ZKFP_ERR_OK != ret) { ret = ZKFPM_AcquireFingerprint(device_handle, m_pImgBuf, m_imgFPWidth * m_imgFPHeight, szTemplate, &tempLen); } for (int i = 0; i < m_imgFPHeight * m_imgFPHeight; i++) { cout << m_pImgBuf[i] << " "; }
第三步 转为TIFF图像显示[1]
我们采用LibTiff库实现创建Tiff图像。具体细节不进行介绍,因为我也不是很清楚内部原理如何。
最后成功实现了生成tif图像。
参考资料
[1] 用LibTIFF绘制TIFF图像
代码下载链接
链接:https://pan.baidu.com/s/1EPrDz7NVJ_LLp5gp_dNHeg
提取码:kksz
复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V1的分享