最近有個專案需要使用指紋采集器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的分享
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/259655.html
標籤:其他
上一篇:快速地為專案選擇開源許可
下一篇:MySQL注入流程
