libzkfp.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. #ifndef _libzkfp_h
  2. #define _libzkfp_h
  3. /**
  4. * @file libzkfp.h
  5. * @brief 接口定义
  6. * @author scar chen
  7. * @date 2016-04-12
  8. * @version 5.0
  9. * @par 版权:
  10. * ZKTeco
  11. * @par 历史版本
  12. *
  13. * @note
  14. *
  15. */
  16. #include <windows.h>
  17. #include "libzkfptype.h"
  18. #ifdef __cplusplus
  19. extern "C"
  20. {
  21. #endif
  22. /**
  23. * @brief 初始化库
  24. * @param :
  25. * 无
  26. * @return
  27. * 返回值说明如下:
  28. * value | type | description of value
  29. * ----------------|---------------|-------------------------------
  30. * 0 | int | 成功
  31. * 其他 | int | 失败
  32. * @note
  33. */
  34. ZKINTERFACE int APICALL ZKFPM_Init();
  35. /**
  36. * @brief 释放库
  37. * @param :
  38. * 无
  39. * @return
  40. * 返回值说明如下:
  41. * value | type | description of value
  42. * ----------------|---------------|-------------------------------
  43. * 0 | int | 成功
  44. * 其他 | int | 失败
  45. * @note
  46. */
  47. ZKINTERFACE int APICALL ZKFPM_Terminate();
  48. /**
  49. * @brief 获取设备数
  50. * @param :
  51. * 无
  52. * @return
  53. * 返回值说明如下:
  54. * 当前接入指静脉仪设备数
  55. * @note
  56. */
  57. ZKINTERFACE int APICALL ZKFPM_GetDeviceCount();
  58. /**
  59. * @brief 打开设备
  60. * @param :
  61. * 参数说明如下表
  62. * name | type | param direction | description of param
  63. * ----------------|-----------------|---------------------|------------------------
  64. * index | int | [in] | 设备索引
  65. * @return
  66. * 返回值说明如下:
  67. * value | type | description of value
  68. * ----------------|---------------|-------------------------------
  69. * NULL | HANDLE | 失败
  70. * 其他 | HANDLE | 成功
  71. * @note
  72. */
  73. ZKINTERFACE HANDLE APICALL ZKFPM_OpenDevice(int index);
  74. /**
  75. * @brief 关闭设备
  76. * @param :
  77. * 参数说明如下表
  78. * name | type | param direction | description of param
  79. * ----------------|-----------------|---------------------|------------------------
  80. * hDevice | HANDLE | [in] | 设备操作实例指针
  81. * @return
  82. * 返回值说明如下:
  83. * value | type | description of value
  84. * ----------------|---------------|-------------------------------
  85. * 0 | int | 成功
  86. * 其他 | int | 失败
  87. * @note
  88. */
  89. ZKINTERFACE int APICALL ZKFPM_CloseDevice(HANDLE hDevice);
  90. /**
  91. * @brief 设置参数
  92. * @param :
  93. * 参数说明如下表
  94. * name | type | param direction | description of param
  95. * ----------------|-----------------|---------------------|------------------------
  96. * hDevice | HANDLE | [in] | 设备操作实例指针
  97. * nParamCode | int | [in] | 参数类型
  98. * paramValue | unsigned char*| [in] | 参数值
  99. * cbParamValue | unsigned int | [in] | 参数数据长度
  100. * @return
  101. * 返回值说明如下:
  102. * value | type | description of value
  103. * ----------------|---------------|-------------------------------
  104. * 0 | int | 成功
  105. * 其他 | int | 失败
  106. * @note
  107. */
  108. ZKINTERFACE int APICALL ZKFPM_SetParameters(HANDLE hDevice, int nParamCode, unsigned char* paramValue, unsigned int cbParamValue);
  109. /**
  110. * @brief 获取参数
  111. * @param :
  112. * 参数说明如下表
  113. * name | type | param direction | description of param
  114. * ----------------|-----------------|---------------------|------------------------
  115. * hDevice | HANDLE | [in] | 设备操作实例指针
  116. * nParamCode | int | [in] | 参数类型
  117. * paramValue | unsigned char*| [out] | 参数值
  118. * cbParamValue | unsigned int* | [out] | 参数数据长度
  119. * @return
  120. * 返回值说明如下:
  121. * value | type | description of value
  122. * ----------------|---------------|-------------------------------
  123. * 0 | int | 成功
  124. * 其他 | int | 失败
  125. * @note
  126. */
  127. ZKINTERFACE int APICALL ZKFPM_GetParameters(HANDLE hDevice, int nParamCode, unsigned char* paramValue, unsigned int* cbParamValue);
  128. /**
  129. * @brief 获取指纹(图像/模板)
  130. * @param :
  131. * 参数说明如下表
  132. * name | type | param direction | description of param
  133. * ----------------|-----------------|---------------------|------------------------
  134. * hDevice | HANDLE | [in] | 设备操作实例指针
  135. * fpImage | unsigned char*| [out] | 指纹图像
  136. * cbFPImage | unsigned int | [in] | fpImage内存大小
  137. * fpTemplate | unsigned char*| [out] | 指纹模板
  138. * cbTemplate | unsigned int* | [in/out] | 指纹模板长度
  139. * @return
  140. * 返回值说明如下:
  141. * value | type | description of value
  142. * ----------------|---------------|-------------------------------
  143. * 0 | int | 成功
  144. * 其他 | int | 失败
  145. * @note
  146. */
  147. ZKINTERFACE int APICALL ZKFPM_AcquireFingerprint(HANDLE hDevice, unsigned char* fpImage, unsigned int cbFPImage, unsigned char* fpTemplate, unsigned int* cbTemplate);
  148. /**
  149. * @brief 获取指纹图像
  150. * @param :
  151. * 参数说明如下表
  152. * name | type | param direction | description of param
  153. * ----------------|-----------------|---------------------|------------------------
  154. * hDevice | HANDLE | [in] | 设备操作实例指针
  155. * fpImage | unsigned char*| [out] | 指纹图像
  156. * cbFPImage | unsigned int | [in] | fpImage内存大小
  157. * @return
  158. * 返回值说明如下:
  159. * value | type | description of value
  160. * ----------------|---------------|-------------------------------
  161. * 0 | int | 成功
  162. * 其他 | int | 失败
  163. * @note
  164. */
  165. ZKINTERFACE int APICALL ZKFPM_AcquireFingerprintImage(HANDLE hDevice, unsigned char* fpImage, unsigned int cbFPImage);
  166. /**
  167. * @brief 创建算法操作实例
  168. * @param :
  169. * 无
  170. * @return
  171. * 返回值说明如下:
  172. * value | type | description of value
  173. * ----------------|---------------|-------------------------------
  174. * NULL | HANDLE | 失败
  175. * 其他 | HANDLE | 成功
  176. * @note
  177. */
  178. ZKINTERFACE HANDLE APICALL ZKFPM_CreateDBCache();
  179. ZKINTERFACE HANDLE APICALL ZKFPM_DBInit(); //same as ZKFPM_CreateDBCache, for new version
  180. /**
  181. * @brief 释放算法操作实例
  182. * @param :
  183. * 参数说明如下表
  184. * name | type | param direction | description of param
  185. * ----------------|-----------------|---------------------|------------------------
  186. * hDBCache | HANDLE | [in] | 算法操作实例指针
  187. * @return
  188. * 返回值说明如下:
  189. * value | type | description of value
  190. * ----------------|---------------|-------------------------------
  191. * 0 | int | 成功
  192. * 其他 | int | 失败
  193. * @note
  194. */
  195. ZKINTERFACE int APICALL ZKFPM_CloseDBCache(HANDLE hDBCache);
  196. ZKINTERFACE int APICALL ZKFPM_DBFree(HANDLE hDBCache); //same as ZKFPM_CloseDBCache, for new version
  197. ZKINTERFACE int APICALL ZKFPM_DBSetParameter(HANDLE hDBCache, int nParamCode, int paramValue);
  198. ZKINTERFACE int APICALL ZKFPM_DBGetParameter(HANDLE hDBCache, int nParamCode, int* paramValue);
  199. /**
  200. * @brief 将3个指纹模板合成登记模板
  201. * @param :
  202. * 参数说明如下表
  203. * name | type | param direction | description of param
  204. * ----------------|-----------------|---------------------|------------------------
  205. * hDBCache | HANDLE | [in] | 算法操作实例指针
  206. * temp1 | unsigned char*| [in] | 指纹模板1
  207. * temp2 | unsigned char*| [in] | 指纹模板2
  208. * temp3 | unsigned char*| [in] | 指纹模板3
  209. * regTemp | unsigned char*| [out] | 登记模板
  210. * cbRegTemp | unsigned int* | [in/out] | 登记模板长度
  211. * @return
  212. * 返回值说明如下:
  213. * value | type | description of value
  214. * ----------------|---------------|-------------------------------
  215. * 0 | int | 成功
  216. * 其他 | int | 失败
  217. * @note
  218. */
  219. ZKINTERFACE int APICALL ZKFPM_GenRegTemplate(HANDLE hDBCache, unsigned char* temp1, unsigned char* temp2, unsigned char* temp3, unsigned char* regTemp, unsigned int* cbRegTemp);
  220. ZKINTERFACE int APICALL ZKFPM_DBMerge(HANDLE hDBCache, unsigned char* temp1, unsigned char* temp2, unsigned char* temp3, unsigned char* regTemp, unsigned int* cbRegTemp); //same as ZKFPM_GenRegTemplate, for new version
  221. /**
  222. * @brief 添加指纹模板到缓存
  223. * @param :
  224. * 参数说明如下表
  225. * name | type | param direction | description of param
  226. * ----------------|-----------------|---------------------|------------------------
  227. * hDBCache | HANDLE | [in] | 算法操作实例指针
  228. * fid | unsigned int | [in] | 手指ID
  229. * fpTemplate | unsigned char*| [in] | 指纹模板
  230. * cbTemplate | unsigned int | [in] | 指纹模板长度
  231. * @return
  232. * 返回值说明如下:
  233. * value | type | description of value
  234. * ----------------|---------------|-------------------------------
  235. * 0 | int | 成功
  236. * 其他 | int | 失败
  237. * @note
  238. */
  239. ZKINTERFACE int APICALL ZKFPM_AddRegTemplateToDBCache(HANDLE hDBCache, unsigned int fid, unsigned char* fpTemplate, unsigned int cbTemplate);
  240. ZKINTERFACE int APICALL ZKFPM_DBAdd(HANDLE hDBCache, unsigned int fid, unsigned char* fpTemplate, unsigned int cbTemplate); //same as ZKFPM_AddRegTemplateToDBCache, for new version
  241. /**
  242. * @brief 从缓存删除指纹模板
  243. * @param :
  244. * 参数说明如下表
  245. * name | type | param direction | description of param
  246. * ----------------|-----------------|---------------------|------------------------
  247. * hDBCache | HANDLE | [in] | 算法操作实例指针
  248. * fid | unsigned int | [in] | 手指ID
  249. * @return
  250. * 返回值说明如下:
  251. * value | type | description of value
  252. * ----------------|---------------|-------------------------------
  253. * 0 | int | 成功
  254. * 其他 | int | 失败
  255. * @note
  256. */
  257. ZKINTERFACE int APICALL ZKFPM_DelRegTemplateFromDBCache(HANDLE hDBCache, unsigned int fid);
  258. ZKINTERFACE int APICALL ZKFPM_DBDel(HANDLE hDBCache, unsigned int fid); //same as ZKFPM_DelRegTemplateFromDBCache, for new version
  259. /**
  260. * @brief 清空算法缓存
  261. * @param :
  262. * 参数说明如下表
  263. * name | type | param direction | description of param
  264. * ----------------|-----------------|---------------------|------------------------
  265. * hDBCache | HANDLE | [in] | 算法操作实例指针
  266. * @return
  267. * 返回值说明如下:
  268. * value | type | description of value
  269. * ----------------|---------------|-------------------------------
  270. * 0 | int | 成功
  271. * 其他 | int | 失败
  272. * @note
  273. */
  274. ZKINTERFACE int APICALL ZKFPM_ClearDBCache(HANDLE hDBCache);
  275. ZKINTERFACE int APICALL ZKFPM_DBClear(HANDLE hDBCache); //same as ZKFPM_ClearDBCache, for new version
  276. /**
  277. * @brief 获取缓存模板数
  278. * @param :
  279. * 参数说明如下表
  280. * name | type | param direction | description of param
  281. * ----------------|-----------------|---------------------|------------------------
  282. * hDBCache | HANDLE | [in] | 算法操作实例指针
  283. * fpCount | unsigned int* | [out] | 指纹模板数
  284. * @return
  285. * 返回值说明如下:
  286. * value | type | description of value
  287. * ----------------|---------------|-------------------------------
  288. * 0 | int | 成功
  289. * 其他 | int | 失败
  290. * @note
  291. */
  292. ZKINTERFACE int APICALL ZKFPM_GetDBCacheCount(HANDLE hDBCache, unsigned int* fpCount);
  293. ZKINTERFACE int APICALL ZKFPM_DBCount(HANDLE hDBCache, unsigned int* fpCount); //same as ZKFPM_GetDBCacheCount, for new version
  294. /**
  295. * @brief 指纹识别(1:N)
  296. * @param :
  297. * 参数说明如下表
  298. * name | type | param direction | description of param
  299. * ----------------|-----------------|---------------------|------------------------
  300. * hDBCache | HANDLE | [in] | 算法操作实例指针
  301. * fpTemplate | unsigned char*| [in] | 指纹模板
  302. * cbTemplate | unsigned int | [in] | 指纹模板大小
  303. * FID | unsigned int* | [out] | 指静脉ID
  304. * score | unsigned int* | [out] | 分数
  305. * @return
  306. * 返回值说明如下:
  307. * value | type | description of value
  308. * ----------------|---------------|-------------------------------
  309. * 0 | int | 成功
  310. * 其他 | int | 失败
  311. * @note
  312. */
  313. ZKINTERFACE int APICALL ZKFPM_Identify(HANDLE hDBCache, unsigned char* fpTemplate, unsigned int cbTemplate, unsigned int* FID, unsigned int* score);
  314. ZKINTERFACE int APICALL ZKFPM_DBIdentify(HANDLE hDBCache, unsigned char* fpTemplate, unsigned int cbTemplate, unsigned int* FID, unsigned int* score); //same as ZKFPM_Identify, for new version
  315. /**
  316. * @brief 比对两枚指纹
  317. * @param :
  318. * 参数说明如下表
  319. * name | type | param direction | description of param
  320. * ----------------|-----------------|---------------------|------------------------
  321. * hDBCache | HANDLE | [in] | 算法操作实例指针
  322. * template1 | unsigned char*| [in] | 指纹模板1
  323. * cbTemplate1 | unsigned int | [in] | 指纹模板1大小
  324. * template2 | unsigned char*| [in] | 指纹模板2
  325. * cbTemplate2 | unsigned int | [in] | 指纹模板2大小
  326. * @return
  327. * 返回值说明如下:
  328. * value | type | description of value
  329. * ----------------|---------------|-------------------------------
  330. * >0 | int | 分数
  331. * 其他 | int | 失败
  332. * @note
  333. */
  334. ZKINTERFACE int APICALL ZKFPM_MatchFinger(HANDLE hDBCache, unsigned char* template1, unsigned int cbTemplate1, unsigned char* template2, unsigned int cbTemplate2);
  335. ZKINTERFACE int APICALL ZKFPM_DBMatch(HANDLE hDBCache, unsigned char* template1, unsigned int cbTemplate1, unsigned char* template2, unsigned int cbTemplate2); //same as ZKFPM_MatchFinger, for new version
  336. /**
  337. * @brief 从Bitmap文件提取指纹模板
  338. * @param :
  339. * 参数说明如下表
  340. * name | type | param direction | description of param
  341. * ----------------|-----------------|---------------------|------------------------
  342. * hDBCache | HANDLE | [in] | 算法操作实例指针
  343. * lpFilePathName | const char* | [in] | BMP图片路径
  344. * DPI | unsigned int | [in] | BMP图片DPI
  345. * fpTemplate | unsigned char*| [out] | 指纹模板
  346. * cbTemplate | unsigned int* | [in/out] | 模板长度
  347. * @return
  348. * 返回值说明如下:
  349. * value | type | description of value
  350. * ----------------|---------------|-------------------------------
  351. * >0 | int | 分数
  352. * 其他 | int | 失败
  353. * @note
  354. */
  355. ZKINTERFACE int APICALL ZKFPM_ExtractFromImage(HANDLE hDBCache, const char* lpFilePathName, unsigned int DPI, unsigned char* fpTemplate, unsigned int *cbTemplate);
  356. /**
  357. * @brief Base64字符串转二进制数据
  358. * @param :
  359. * 参数说明如下表
  360. * name | type | param direction | description of param
  361. * ----------------|-----------------|---------------------|------------------------
  362. * src | const char* | [in] | Base64字符串
  363. * blob | unsigned char*| [out] | 返回二进制数据
  364. * cbBlob | unsigned int | [in] | blob内存大小
  365. * @return
  366. * 返回值说明如下:
  367. * value | type | description of value
  368. * ----------------|---------------|-------------------------------
  369. * >0表示数据长度;<=0表示失败
  370. * @note
  371. */
  372. ZKINTERFACE int APICALL ZKFPM_Base64ToBlob(const char* src, unsigned char* blob, unsigned int cbBlob);
  373. /**
  374. * @brief 二进制数据转Base64字符串
  375. * @param :
  376. * 参数说明如下表
  377. * name | type | param direction | description of param
  378. * ----------------|-----------------|---------------------|------------------------
  379. * src |const unsigned char*| [in] | 二进制数据
  380. * cbSrc | unsigned int | [in] | 二进制数据长度
  381. * base64Str | char * | [out] | 返回Base64字符串
  382. * cbBase64str | unsigned int | [int] | base64Str分配内存大小
  383. * @return
  384. * 返回值说明如下:
  385. * value | type | description of value
  386. * ----------------|---------------|-------------------------------
  387. * >0表示数据长度;<=0表示失败
  388. * @note
  389. */
  390. ZKINTERFACE int APICALL ZKFPM_BlobToBase64(const unsigned char* src, unsigned int cbSrc, char* base64Str, unsigned int cbBase64str);
  391. /**
  392. * @brief 1:1比对用户指纹
  393. * @param :
  394. * 参数说明如下表
  395. * name | type | param direction | description of param
  396. * ----------------|-----------------|---------------------|------------------------
  397. * hDBCache | HANDLE | [in] | 算法操作实例指针
  398. * fpTemplate | unsigned char*| [in] | 指纹模板
  399. * cbTemplate | unsigned int | [in] | 指纹模板大小
  400. * @return
  401. * 返回值说明如下:
  402. * value | type | description of value
  403. * ----------------|---------------|-------------------------------
  404. * >0 | int | 分数
  405. * 其他 | int | 失败
  406. * @note
  407. */
  408. ZKINTERFACE int APICALL ZKFPM_VerifyByID(HANDLE hDBCache, unsigned int fid, unsigned char* fpTemplate, unsigned int cbTemplate);
  409. /**
  410. * @brief 获取最后一次外部图像数据指针
  411. * @param :
  412. * 参数说明如下表
  413. * name | type | param direction | description of param
  414. * ----------------|-----------------|---------------------|------------------------
  415. * width | int* | [out] | 图像宽
  416. * height | int* | [out] | 图像高
  417. * @return
  418. * 返回值说明如下:
  419. * value | type | description of value
  420. * ----------------|---------------|-------------------------------
  421. * 图像数据指针,请在ZKFPM_ExtractFromImage成功后获取
  422. * @note
  423. */
  424. ZKINTERFACE unsigned char* APICALL ZKFPM_GetLastExtractImage(int * width, int* height);
  425. /**
  426. * @brief 获取采集参数
  427. * @param :
  428. * 参数说明如下表
  429. * name | type | param direction | description of param
  430. * ----------------|-----------------|---------------------|------------------------
  431. * hDevice | HANDLE | [in] | 设备操作实例指针
  432. * pCapParams | PZKFPCapParams| [out] | 采集参数
  433. * @return
  434. * 返回值说明如下:
  435. * value | type | description of value
  436. * ----------------|---------------|-------------------------------
  437. * 0 | int | 成功
  438. * 其他 | int | 失败
  439. * @note
  440. */
  441. ZKINTERFACE int APICALL ZKFPM_GetCaptureParams(HANDLE hDevice, PZKFPCapParams pCapParams);
  442. ZKINTERFACE int APICALL ZKFPM_GetCaptureParamsEx(HANDLE hDevice, int* width, int* height, int* dpi);
  443. #ifdef __cplusplus
  444. };
  445. #endif
  446. #endif //_libzkfp_h