指纹采集器Live 20R

最近有个项目须要使用指纹采集器Live 20R,买来这个小玩意后不知道怎么用,看了一些教程和本身摸索了一下,才初步掌握了用的方法。html

环境:c++

  • 硬件:联想 小新
  • 操做系统:Win 10
  • IDE:VS2019

下载SDK包 运行Demo

首先插上Live 20R后,电脑没什么反应,能够在“设备和打印机”中看到Live 20R是已经链接到了电脑上来,可是因为缺乏驱动程序,所以当你双击Live 20R的图标时,电脑会提醒你该设备没有驱动程序,这个驱动程序须要咱们本身去官网上进行安装。windows

接着须要去官网上下载开发包,连接以下:安全

https://www.zkteco.com/cn/download_catgory.htmlui

能够看到下面的SDK开发包,分为Windows和Android,因为个人环境是Win 10,所以下载红框圈主的windows开发包。操作系统

下载下来后首先运行setup.exe安装驱动程序3d

当安装完毕后,咱们再次打开“设备与打印机”。code

发现已经不提示缺乏驱动程序了,而是该设备运转正常。htm

以后再次进入官网下载的开发包里面,这里面提供了几种不一样语言写的demo程序和一些依赖库文件,咱们打开C语言的示例程序,能够看到是MFC程序,很是老了(为了运行,我又在本身的VS2019里面从新装了一下对MFC的支持),能够看到大概运行起来就是下图这个样子,手指按上去,能够得到手指的灰度图(出于安全考虑打了一部分码 🤣)。同时Demo还提供了验证指纹图像是否一致等功能,里面代码仍是值得好好研究的😀。blog

分析代码 自主创业

第一步添加头文件和库文件

在代码中将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

第二步 编写代码

  1. 定义设备句柄

    HANDLE device_handle;
  2. 初始化设备

    if (ZKFP_ERR_OK != ZKFPM_Init()) {	//initialize resource
    		cout << "error in zkfpm_init\n";
    }
  3. 打开设备

    if ((device_handle = ZKFPM_OpenDevice(0)) == NULL)	{//open the device
    
    		cout <<  "error in zkfpm_openDevice\n";
    		ZKFPM_Terminate();
    		return 0;
    }
  4. 获取参数:指纹图像的宽和高

    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);
  5. 获取指纹

    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的分享

相关文章
相关标签/搜索