==虹软官网地址==
http://www.arcsoft.com.cn

在官网注册账号,并且申请人脸识别激活码, 选择SDK版本和运行系统(windows/linux/android/ios) ,我们选择windows做测试,申请类型选择1:N ,功能模块包括人脸检测、人脸跟踪、人脸识别。申请之后会获取APP_ID 和SDK_Key,在代码中会用到。

==虹软SDK人脸检测目的==

主要是与face++人脸检测做对比,看能否在face++人脸检测之前选择虹软事先检测一下。

==c++部分功能实现==

选择 Qtcreator 4.2.1 ,新建c++ 库。
设置Qt .pro文件

```
#不加载Qt库
QT -= core gui
#生成库名字
TARGET = detect_lib
#定义生成lib
TEMPLATE = lib

DEFINES += DETECT_LIB_LIBRARY
SOURCES += detect_lib.cpp
#加载虹软sdk头文件
HEADERS += detect_lib.h \
inc/amcomdef.h \
inc/ammem.h \
inc/arcsoft_fsdk_face_detection.h \
inc/asvloffscreen.h \
inc/merror.h

unix {
target.path = /usr/lib
INSTALLS += target
}

unix|win32: LIBS += -L$$PWD/lib/ -llibarcsoft_fsdk_face_detection

INCLUDEPATH += $$PWD/.
DEPENDPATH += $$PWD/.
```
上面是.pro文件,主要是一些配置信息,如生成库名字 加载虹软SDK 和头文件...

下面是detect_lib.h文件 主要供nodejs调用的接口文件。

```
#ifndef DETECT_LIB_H
#define DETECT_LIB_H

# ifdef __cplusplus
# define EXTERN_NAME extern "C"
# else
# define EXTERN_NAME extern
# endif

#if defined(WIN32)
# define Q_DECL_EXPORT __declspec(dllexport)
# define Q_DECL_IMPORT __declspec(dllexport)
#if defined(DETECT_LIB_LIBRARY)
# define DETECT_LIBSHARED_EXPORT EXTERN_NAME Q_DECL_EXPORT
# else
# define DETECT_LIBSHARED_EXPORT EXTERN_NAME Q_DECL_IMPORT
#endif
#else
# define DETECT_LIBSHARED_EXPORT EXTERN_NAME
#endif

DETECT_LIBSHARED_EXPORT int add(int a,int b);

DETECT_LIBSHARED_EXPORT int detect(unsigned char * data,int width,int height);

#endif // DETECT_LIB_H
```

接口add 函数 主要做测试用

int detect(unsigned char * data,int width,int height);

检测人脸函数, data:rgb像素值,width:图片宽度,height:图片高度

detect_lib.cpp

```
#include <nan.h>
#include "detect_lib.h"
using namespace Nan ;
using namespace v8;

class DetectWorker : public AsyncWorker {
public:
DetectWorker(Callback *callback, unsigned char* buffer,int width,int height)
: AsyncWorker(callback), p_buffer(buffer), m_width(width),m_height(height) {m_num = 0;}
~DetectWorker() {}

//这个函数运行在工作线程,而不是v8线程,所以不能访问v8的数据
void Execute () {

//m_num = add(12,3);
m_num = detect(p_buffer,m_width,m_height);
// m_num = 5;

}

//这个是libuv的回调函数,在这里可以使用v8的数据
void HandleOKCallback () {

Local<Object> bmpData = NewBuffer(m_num).ToLocalChecked();
Local<Value> argv[] = {
Nan::Null()
,Uint32::New(v8::Isolate::GetCurrent(),m_num)
};

callback->Call(2, argv);
};

private:
unsigned char * p_buffer;
int m_width;
int m_height;
int m_num;
};

NAN_METHOD(detect){
unsigned char * buffer = (unsigned char*) node::Buffer::Data(info[0]->ToObject());
int width = info[1]->Uint32Value();
int height = info[2]->Uint32Value();

Callback *callback = new Callback(info[3].As<Function>());
AsyncQueueWorker(new DetectWorker(callback, buffer,width ,height));
}

NAN_MODULE_INIT(Init)
{
Nan::Set(target,New<String>("detect").ToLocalChecked(),
GetFunction(New<FunctionTemplate>(detect)).ToLocalChecked());
}

NODE_MODULE(detect, Init)
```
NAN_METHOD(detect) 表示定义接口detect ,js可以直接调用,
这里主要是node中的buffer直接以字节的方式传递给c++。也是nodejs与c++交互的重要方式。

将编译好的dll 和虹软sdk dll 和detect_lib.h拷贝到当前目录,然后通过node-gyp configure 和node-gyp build 生成.node

至此.node库编译完成,可以使用require直接饮用该.node 如:var detect = require('./build/Release/detect.node');

转载于:https://www.cnblogs.com/Zzz-/p/10531542.html

在nodejs中的集成虹软人脸识别相关推荐

  1. linux中人脸识别不了,虹软人脸识别在 linux中so文件加载不到的问题

    其实是可以加载到的,不过是so文件放的位置不一对,最简单的方式是放在 /usr/lib64 目录下,也可自己设置. so文件加载不到会报这个错误: .lang.UnsatisfiedLinkError ...

  2. 虹软java接摄像头_虹软人脸识别SDK在网络摄像头中的实际应用

    目前在人脸识别领域中,网络摄像头的使用很普遍,但接入网络摄像头和人脸识别SDK有一定门槛,在此篇中介绍过虹软人脸识别SDK的接入流程,本文着重介绍网络摄像头获取视频流并处理的流程(红色框内),以下内容 ...

  3. 虹软人脸识别-SpringBoot集成

    一.前言 人工智能时代的到来,相信大家已耳濡目染,虹软免费,离线开放的人脸识别 SDK,正推动着全行业进入刷脸时代.为了方便开发者接入,虹软提供了多种语言,多种平台的人脸识别SDK的支持,使用场景广泛 ...

  4. 基于虹软人脸识别Web私有化服务(快速人脸服务集成二次开发)

    基于虹软人脸识别微服务 生物智能识别服务开放接口(基于OAuth2.0) 完整文档 生物智能识别服务开放接口202000722v1.03.01.pdf 生物智能识别服务系统是一个将人脸识别.指纹识别. ...

  5. 基于虹软人脸识别,实现RTMP直播推流追踪视频中所有人脸信息(C#)

    大家应该都知道几个很常见的例子,比如在张学友的演唱会,在安检通道检票时,通过人像识别系统成功识别捉了好多在逃人员,被称为逃犯克星:人行横道不遵守交通规则闯红灯的路人被人脸识别系统抓拍放在大屏上以示警告 ...

  6. vc中人脸识别数据导入mysql_虹软人脸识别 - 采用数据库存取人脸特征数据

    虹软人脸识别 - 采用数据库存取人脸特征数据 前几天有个朋友遇到了个问题,他在使用虹软的人脸识别引擎时,想更换一下人脸识别的存储方式,原本demo中使用的是文件的方式进行存储,而他想要通过数据库的方式 ...

  7. 虹软人脸识别SDK接入Milvus实现海量人脸快速检索

    虹软人脸识别SDK接入Milvus实现海量人脸快速检索 背景 虹软SDK及Milvus简介 开发环境 虹软人脸识别SDK使用简介 Milvus环境搭建 快速检索实现 人脸识别流程简介 快速检索 虹软S ...

  8. 虹软android工程师,虹软人脸识别技术公开课开讲!AI工程师如何快速进阶

    原标题:虹软人脸识别技术公开课开讲!AI工程师如何快速进阶 随着刷脸乘坐公交.公租房人脸识别管理系统.景区人证核验入园等创新应用的加速普及,人脸识别技术已经在广泛的行业.领域中得到使用.在见证人脸识别 ...

  9. android 人脸识别边框_【技术分享】虹软人脸识别 - Android Camera实时人脸追踪画框适配...

    在使用虹软人脸识别Android SDK的过程中 ,预览时一般都需要绘制人脸框,但是和PC平台相机应用不同,在Android平台相机进行应用开发还需要考虑前后置相机切换.设备横竖屏切换等情况,因此在人 ...

最新文章

  1. 《DBA修炼之道:数据库管理员的第一本书》——1.2节独特的优势
  2. Tornado,展示一下模板渲染
  3. 手把手教你AndroidStudio多渠道打包
  4. UVa10382 - Watering Grass(贪心算法)
  5. db2 修改表空间自增长_db2表空间及日志文件调整
  6. 云栖发布|企业级互联网架构全新升级 ,助力数字创新
  7. hdu1247(Hat’s Words)
  8. Lync Server外部访问系列PART5:模拟公网DNS
  9. java写顾客购买的商品总价格_成交总金额=商品价格×商品件数-总优惠额。 如果一个顾客,购买的商品一口价为5元,购买的商品件数为4,总物流运费4元,满20送3,请问成交的金额是()。...
  10. ROS入门 TF与URDF
  11. 【指纹识别】基于matlab GUI指纹识别【含Matlab源码 1353期】
  12. 服务器系统安装蓝牙驱动,win2008蓝牙驱动的装配教程详解
  13. 人工智能轨道交通行业周刊-第9期(2022.8.8-8.14)
  14. android sdk 固态硬盘,使用TVM在android中进行Mobilenet SSD部署
  15. python关键字参数必须位于位置参数之前_python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)...
  16. 开发必备的最高100个 Flutter 开源精品项目
  17. ML-czy的小组任务3
  18. echarts城市地图加标注
  19. 毕业设计-基于微信小程序的工单智能管理系统
  20. initramfs概述

热门文章

  1. 64.JPA命名策略【从零开始学Spring Boot】
  2. Javascript网页摇一摇
  3. 在linux下配置oracle的远程访问
  4. 绝对养眼 Tech·Ed 2008大会SHOW GIRL动感热舞
  5. Jmeter(六)关联之XPath提取器
  6. hadoop大数据平台架构之DKhadoop详解
  7. PHP采集商家信息及采集方法概述(上)
  8. oracle11g中SQL优化(SQL TUNING)新特性之Adaptive Cursor Sharing (ACS)
  9. 步入DevExpress的使用(VS)
  10. Oracle字符集问题总结