指紋采集器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

第二步 編寫代碼

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM