一、前言

随着5G时代的到来,人脸识别技术越来越贴近我们的生活,对于开发人员来说要面临的挑战也越来越艰巨。虹软作为国内领先的人脸识别算法厂商之一,提供了多平台多语言的人脸识别SDK,使用场景广泛。产品主要功能有:人脸检测、追踪、特征提取、特征比对、属性检测,活体检测,图像质量检测等。此外,虹软提供的是基于本地算法特征的离线识别SDK,提供全平台的离线支持。

随着node.js的广泛应用,基于node.js诞生的前端及后端框架也越来越多,例如:桌面版跨平台应用框架:Electron;服务端框架:express、koa、thinkjs、eggjs等等。细心的小伙伴可能会发现,官方并未提供node.js的SDK,本文将讲解在node.js环境下如何调用虹软人证核验增值版Windows X64位 3.0版 C++ SDK包

二、环境配置

  • 安装 node.js > v10.0.0,本人使用v12.19.1
  • 配置 npm 镜像
npm config set registry https://registry.npm.taobao.org
  • 安装 node-ffi 编译工具:windows-build-tools

安装过程需要花费较长时间,请耐心等待,期间千万不要中断,控制台显示 all success 代表完成。

此操作会自动配置node-gyp、python等

npm install -g windows-build-tools

三、框架引入封装的npm包

npm包已将所有sdk方法集成,只需调用对应方法即可。

npm包可在electron、koa等框架下直接引入调用。

如大家有兴趣研究调用过程的,可直接参考代码。

项目源代码地址:github

npm i arcsoft-idcardpro --save

node.js调用C++动态库依赖node-ffi库,因node-ffi支持的node版本版本过低,在electron高版本中无法使用;

有一位国外作者提供了 node-ffi-napi 的库来支持高版本的node.js,推荐大家使用。

npm包会自动下载所需要的依赖:包括 ffi-napi、ref-array-di、ref-napi、ref-struct-di以及图像处理库jimp。

四、调用方法

以下方法的配置和回调参数请参考 虹软官方文档

'use struct';const path = require('path');
const IdCardPro = require('arcsoft-idcardpro');const idcard = new IdCardPro();(async function () {
// 设置引入文件路径,将sdk下的libarcsoft_face.dll、libarcsoft_face_engine.dll、libarcsoft_idcardveri.dll、libarcsoft_idcardveri.lib放置您预设的调用目录即可。process.env.PATH = `${process.env.PATH}${path.delimiter}${path.join(__dirname, './dll')}`;try {// 在线激活const onlineActivationRes = idcard.onlineActivation('libarcsoft_idcardveri', {appId: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // 请使用自己的sdkKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", // 请使用自己的activeKey: 'xxxx-xxxx-xxxx-xxxx' // 请使用自己的});console.log(onlineActivationRes);// 离线激活const offlineActivationRes = idcard.offlineActivation('libarcsoft_idcardveri', path.join(__dirname, '../A621114C3133JNGR.dat'));console.log(offlineActivationRes);// 获取激活文件信息const getActiveFileInfoRes = idcard.getActiveFileInfo('libarcsoft_idcardveri');console.log(getActiveFileInfoRes);// 配置及初始化引擎const initOpts = {libFile: 'libarcsoft_idcardveri',// 检测属性配置:1:开启RGB活体检测,2:开启IR活体检测,3:开启图像质量检测,4:开启RGB+IR活体检测,5:开启RGB活体检测和图像质量检测,6:开启IR活体检测和图像质量检测,7:开启RGB+IR活体检测和图像质量检测combinedMask: 1,imgQualityThreshold: 0.4, // 照片图像质量阈值modelThreshold_RGB: 0.5, // RGB活体检测阈值modelThreshold_IR: 0.7 // IR活体检测};const initRes = idcard.initialEngine(initOpts);if (initRes !== 0) {throw new Error('Initial Engine Failed!');}// 人证照片比对const compareOpts = {type: 0, // 人脸数据类型 1-视频 0-静态图片compareThreshold: 0.5, // 人证照比对阈值idcardFile: await idcard.parseImage(path.join(__dirname, './img/f1.jpg')),faceFile: await idcard.parseImage(path.join(__dirname, './img/faceA.jpg'))};const compareRes = idcard.faceIdcardCompare(compareOpts);console.log(compareRes);} catch (err) {console.error(err);}
})();

开源不易,转载请注明出处,谢谢~

如果你觉得此开发包帮到了你,请捐赠以表示支持,谢谢~

使用过程中有问题的可微信联系本人

虹软人证核验增值版-node.js调用C++SDK相关推荐

  1. 基于虹软人证核验 2.0 Android SDK开发集成入门

    一.功能介绍 虹软人证核验 2.0 SDK(以下简称SDK)包含人脸检测.人脸跟踪.人证核验等能力,主要实现人证的1:1比对. 其中暴露对外的功能方法有: active 引擎激活 init 引擎初始化 ...

  2. Node.js调用C#代码

    https://github.com/tjanczuk/edge 运行的时候会报 System.DllnotfoundException 无法加载node.dll,要把\packages\Edge.j ...

  3. node.js调用ejs模板,在浏览器上打印出ejs模板内代码的解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 今天遇到一个非常奇葩的问题,node.js调用ejs模板的时候,在浏览器端居然把此模板内的所有代码都打印出来了,当时我和我的小 ...

  4. Node.js 调用 C++ 方法 / C++ Addons 详解

    最近开发涉及到了一些Node.js调用C++的地方,于是网上搜了一下,发现网上好多文章都是比较片面的东西,没法直接使用.于是花点时间总结一下. Android开发中Java 调用C++的部分叫JNI, ...

  5. Node.JS调用企业微信API:生成渠道二维码

    目标: 通过API设置成员的"联系我"方式生成渠道标识二维码,实现标记客户扫码渠道,方便个渠道客户信息统计等. 实现环境: 白码低代码平台(该平台提供企业微信API,可直接调用,减 ...

  6. node.js调用.c文件_在Node.js中分派S3文件

    node.js调用.c文件 Some of our intranet backends use S3 storage and GraphQL APIs. It's a common scenario ...

  7. $ npm install opencv ? 你试试?! 在windows环境下,使用node.js调用opencv攻略

    博主之前写过一篇文章<html5与EmguCV前后端实现--人脸识别篇>,叙述的是opencv和C#的故事.最近在公司服务器上更新了一套nodejs环境,早就听闻npm上有opencv模块 ...

  8. c语言node程序,如何从Node.js调用C代码?

    那么V8允许从 JavaScript调用C代码. 所以你可以有3部分代码: >正常C,不知道node.js和V8.这将是世界的地方. > Glue node.js / V8-C代码,允许J ...

  9. node.js调用Delphi写的Dll

    一.调用代码 Delphi版本Delphi 10 Seattle Delphi代码 unit Unit1;interfacefunction testint(i: Integer): Integer; ...

最新文章

  1. [elixir! #0007] [译] 理解Elixir中的宏——part.5 重塑AST by Saša Jurić
  2. 用stm32开发时是直接买现成的开发板还是芯片?开发板学习,芯片硬件设计
  3. Zabbix2.2.6邮件报警设置方法
  4. ASA 5.0/8.0/9.0 杂记
  5. java程序结构_java程序的三种结构
  6. wxpython开发实例_Python中使用wxPython开发的一个简易笔记本程序实例
  7. 移植MyEclipse Web项目到Eclipse变成Java Project的解决办法
  8. mysql sqlserver alter语句区别_SQL ALTER
  9. 加油吧 少年(励志)
  10. flash 插件 安装
  11. 【工具】-13UML泳道图
  12. 新唐单片机选型手册_Nuvoton新唐8位8051单片机选型指南
  13. 小步大步算法,循环(Transform,玲珑杯 Round#5 F lonlife 1061)
  14. 驱动器控制模式功能简介(CSP,CSV,CST等)
  15. jquery绑定Esc键事件
  16. Hibernate 3.6.10 jar包下载链接
  17. JavaScript特效源码(8、其他特效)
  18. ListView案例集锦
  19. android车载信息娱乐系统,基于Android的车载娱乐信息系统
  20. 空战小游戏(控制台应用) c/c++实现

热门文章

  1. 超级电脑可下载人类思想 究竟是福是祸?(
  2. 优化 | Pick and delivery problem的简介与建模实现(二)
  3. mysql config.xml_generatorConfig-mysql.xml中连接数据库的正确书写方式。
  4. python编程语言进化_编程语言的进化史和分类
  5. 计算机研究生搞理论出来找工作,一个计算机专业研究生的迷茫
  6. 【python爬虫自学笔记】-----爬取简书网站首页文章标题与链接
  7. 计算机组成与系统结构期末复习 第二章 2.2
  8. PLC程序案例一:喷泉电路(采用中间继电器完成分步控制)
  9. iOS模拟各种网络状态测试
  10. 微观结构到应用材料力学行为