• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

指纹采集器Live 20R


JieGe

Recommended Posts

  • Members

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

环境:

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

下载SDK包 运行Demo#

首先插上Live 20R后,电脑没什么反应,可以在“设备和打印机”中看到Live 20R是已经连接到了电脑上来,但是由于缺少驱动程序,因此当你双击Live 20R的图标时,电脑会提醒你该设备没有驱动程序,这个驱动程序需要我们自己去官网上进行安装。

1720465-20210214103030327-1777846442.png

接着需要去官网上下载开发包,链接如下:

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

可以看到下面的SDK开发包,分为Windows和Android,由于我的环境是Win 10,因此下载红框圈主的windows开发包。

1720465-20210214103048258-884329282.png

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

1720465-20210214103104354-1955401639.png

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

1720465-20210214103118295-1711375147.png

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

1720465-20210214103136845-497301844.png

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

1720465-20210214103151813-933529226.png

分析代码 自主创业#

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

1720465-20210214103200113-1563463730.png

在代码中将include的头文件都包含进来

Copy
#include "libzkfp/include/zkinterface.h"
#include "libzkfp/include/libzkfperrdef.h"
#include "libzkfp/include/libzkfptype.h"
#include "libzkfp/include/libzkfp.h"

可以看到库文件有两个x64为64位的库文件,x86为32位的库文件,因此我们通过添加下面这句,来添加库文件

Copy
#ifdef _WIN64
#pragma comment(lib, "libzkfp/x64lib/libzkfp.lib")
#else
#pragma comment(lib, "libzkfp/x86lib/libzkfp.lib")
#endif

第二步 编写代码#

  1. 定义设备句柄

    Copy
    HANDLE device_handle;
    
  2. 初始化设备

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

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

    Copy
    	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. 获取指纹

    Copy
    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图像。

1720465-20210214103215278-1282595140.png

参考资料#

[1] 用LibTIFF绘制TIFF图像

代码下载链接#

链接:https://pan.baidu.com/s/1EPrDz7NVJ_LLp5gp_dNHeg
提取码:kksz
复制这段内容后打开百度网盘手机App,操作更方便哦--来自百度网盘超级会员V1的分享

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now