==虹软官网地址==
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');

在nodejs中的集成虹软人脸识别的更多相关文章

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

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

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

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

  3. 虹软人脸识别 - Android Camera实时人脸追踪画框适配

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

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

    一.背景 人脸识别是近年来最热门的计算机视觉领域的应用之一,而且现在已经出现了非常多的人脸识别算法,如:DeepID.FaceNet.DeepFace等等.人脸识别被广泛应用于景区.客运.酒店.办公室 ...

  5. 集成Android人脸识别demo分享

    本应用来源于虹软人工智能开放平台,人脸识别技术工程如何使用? 1.下载代码 git clone https://github.com/andyxm/ArcFaceDemo.git 2.下载虹软人脸识别 ...

  6. 记C# 调用虹软人脸识别 那些坑

    上一个东家是从事安防行业的,致力于人工智能领域,有自主人脸识别.步态识别的算法.C++同事比较称职有什么问题都可以第一时间反馈,并得到合理的处理,封装的DLL 是基于更高性能的GPU算法,可支持更多线 ...

  7. 虹软人脸识别 - faceId及IR活体检测的更新介绍

    虹软人脸识别 - faceId及IR活体检测的介绍 前几天虹软推出了 Android ArcFace 2.2版本的SDK,相比于2.1版本,2.2版本中的变化如下: VIDEO模式新增faceId(类 ...

  8. 虹软人脸识别 - faceId及IR活体检测的介绍

    虹软人脸识别 - faceId及IR活体检测的介绍 前几天虹软推出了 Android ArcFace 2.2版本的SDK,相比于2.1版本,2.2版本中的变化如下: VIDEO模式新增faceId(类 ...

  9. 虹软SDK在nodejs中的集成

    ==虹软官网地址== http://www.arcsoft.com.cn 在官网注册账号,并且申请人脸识别激活码, 选择SDK版本和运行系统(windows/linux/android/ios) ,我 ...

随机推荐

  1. PXC备份方式总结

    记录一下. 1.mysqldump数据导出 关于GTID: GTID是MySQL5.6以后,加入了全局事务 ID (GTID) 来强化数据库的主备一致性,故障恢复,以及容错能力. A global t ...

  2. Golang闭包案例分析与普通函数对比

    闭包案例 package main import ( "fmt" "strings" //记住一定引入strings包 ) //①编写一个函数makeSuffi ...

  3. [WCF REST] 一个简单的REST服务实例

    Get:http://www.cnblogs.com/artech/archive/2012/02/04/wcf-rest-sample.html [01] 一个简单的REST服务实例 [02] We ...

  4. python简说(十七)操作mysql数据库

    import pymysqlconn = pymysql.connect(host='118.24.3.40',user='jxz',password='123456',port=3306,db='j ...

  5. 【Python31--pickle函数】

    一.含义 1.pickle的实质是什么 答:利用一些算法把数据对象转换成“二进制文件”,存储在硬盘上,当然也可以放在数据库或者是另外一台计算机上 2.存放:picking,读取:unpicking 3 ...

  6. CentOS6.8下安装mysql

    转自https://blog.csdn.net/jeffleo/article/details/53559712?utm_source=itdadao&utm_medium=referral ...

  7. SpringBoot 超时设置

    1.RestTemplate超时 设置配置HttpComponentsClientHttpRequestFactory中的RequestConfig属性 RestTemplateConfig: imp ...

  8. IDEA查看一个类的所有继承关系

    通常一个.java文件对应一个java类. 鼠标右击一个类: 即可查看.按住alt键可放大. 另一快捷键:光标在类名上,ctrl+H

  9. MyEclipse代码编辑器中汉字太小的解决办法(中文看不清)

    问题描述:新安装的myeclipse 2014,代码编辑器中汉字很小看不清 解决办法:调整字体即可.通过菜单Windows——Preferences,输入font过滤选择Colors and Font ...

  10. MySQL 安装步骤

    今天用了一下MySQL,刚好看到之前电保存脑的笔记,于是整理了一下,还是记在博客上方便查询. 1.官网下载https://dev.mysql.com/downloads/mysql/之前安装的是mys ...