基于node.js人脸识别之人脸对比

Node.js简介

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。

Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHPPythonPerlRuby 等服务端语言平起平坐的脚本语言。 发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装。

Node对一些特殊用例进行优化,提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。

Node是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

百度AI开放平台

 

在百度AI开放平台使用百度的人脸识别能力三个核心步骤   【 获取接口权限 → 准备接口调用工具 → 进行接口调用】

以下过程将做具体的阐述和对在操作过程中出现的问题和需要注意的地方加以强调:

1. 获取接口权限获取接口权限是调用接口的前提

首先进入百度云的人脸识别控制台(进入控制台需要提前注册使用密码或手机短信进行登录)

https://console.bce.baidu.com/ai/?_=1528192333418&fromai=1#/ai/face/overview/index

  • 创建人脸识别应用

账号登录成功,首先创建应用,填写【应用名称】和【应用描述】,即可创建应用,需要注意的是这二者缺一不可;

  • 创建完毕点击返回应用列表

此时应用列表中就会出现百度分配的AppID、API Key以及Secret Key

2.准备接口调用工具(建议使用postman进行快速接口调用)

下载地址如下:

Mac地址:http://face-private.su.bcebos.com/%E4%BA%BA%E8%84%B8%E5%91%A8%E5%B9%B4-postman/postman-mac.zip?authorization=bce-auth-v1%2Ff86a2044998643b5abc89b59158bad6d%2F2018-06-06T02%3A31%3A38Z%2F-1%2Fhost%2Fdd7f7c69f4e3dc9931886be3d386f1ade5d6502769e1701da3bf9d07b60f9d51

Windows地址:http://face-private.su.bcebos.com/%E4%BA%BA%E8%84%B8%E5%91%A8%E5%B9%B4-postman/postman-win.zip?authorization=bce-auth-v1%2Ff86a2044998643b5abc89b59158bad6d%2F2018-06-06T02%3A33%3A34Z%2F-1%2Fhost%2Faebbd11ab9637b23cc5c02c77b59a397beb42fd84aaa983c0cb57cd4234a8d42

安装后直接进入主页面:

如下图,这就是Postman的主界面

3. 进行调用接口

在postman上可以快速进行接口请求,调用人脸识别接口需要输入正确的接口地址,提前准备人脸图片,具体步骤如下:

获取调用接口所需的Access Token

人脸识别在线接口主要针对HTTP API调用者,,调用API时必须在URL中带上accesss_token参数,获取Access Token的流程如下:

A、如果您使用的是mac电脑可以将此示例代码复制到“终端”上直接获取token。示例代码如下:

#!/bin/bash curl -i -k'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【API Key】&client_secret=【Seceret Key】

B、非Mac电脑操作流程如下,参考文档:http://ai.baidu.com/docs#/Auth/top

  • 获取Access Token

请求URL数据格式

向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:

·grant_type: 必须参数,固定为client_credentials;

·client_id: 必须参数,应用的API Key;

·client_secret: 必须参数,应用的Secret Key;

例如:

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=bDBSXAhG890GBdCia0G1eKiq&client_secret=gcecCObNozdTud1Zb4fVTcP0YYTWQiR0

服务器返回的JSON文本参数如下:

·access_token: 要获取的Access Token;

·expires_in: Access Token的有效期(秒为单位,一般为1个月);

·其他参数忽略,暂时不用;

例如:

{

"refresh_token": "25.8d95acbaffb7dfbd2d35f22af01e0a90.315360000.1890703481.282335-17377713",

"expires_in": 2592000,

"session_key": "9mzdXvbx0cCZTvSy1c64dXBKfGXAerzJuT77zTuaQ7W2xAlxINIEk8srP8gUpXE5WhauCZ/Pn02x9iiW2XH6jWwDfFnHWA==",

"access_token": "24.e3d102c0ec5d28013199e56208c1286f.2592000.1577935481.282335-17377713",

"scope": "public brain_all_scope vis-faceverify_faceverify_h5-face-liveness vis-faceverify_FACE_V3 vis-faceverify_idl_face_merge brain_cvpaas-app-scope wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian ApsMisTest_Test权限 vis-classify_flower lpq_开放 cop_helloScope ApsMis_fangdi_permission smartapp_snsapi_base iop_autocar oauth_tp_app smartapp_smart_game_openapi oauth_sessionkey smartapp_swanid_verify smartapp_opensource_openapi smartapp_opensource_recapi fake_face_detect_开放Scope vis-ocr_虚拟人物助理 idl-video_虚拟人物助理",

"session_secret": "bce96d5ad901ad5d904915afeeafd6ac"

}

若请求错误,服务器将返回的JSON文本包含以下参数:

·error: 错误码;关于错误码的详细信息请参考下方鉴权认证错误码。

·error_description: 错误描述信息,帮助理解和解决发生的错误。

例如认证失败返回:

{

"error": "invalid_client",

"error_description": "unknown client id"

}

保存获取到的Access Token,在调用接口时会用到。

 

  • 输入请求地址

可直接复制的请求地址:“https://aip.baidubce.com/rest/2.0/face/v3/faceset/user/add?access_token=【在第一步中获取的access-token】”

注:需要将请求格式切换为“Post”

  • 修改请求头(header)

Key栏输入:Content-Type

Value栏输入:application/x-www-form-urlencoded

  • 输入请求参数(body)

先选择“x-www-form-urlencoded”,然后参考下图输入参数:

image_type=BASE64

image=图片的base64转码后的结果(此处要使用即将注册到人脸库的人脸图片),转码工具:https://tool.css-js.com/base64.html(注意:在base64转码工具中,要取消默认选项“包含头”)

group_id=gropu001(可自定义:由数字、字母、下划线组成)

user_id=0001(可自定义:由数字、字母、下划线组成)

转码工具的使用:

在body中选择raw,在下面输入如下格式的代码:

准备工作完成后点击send,会出现对比出来的分值(无错误的情况下)如果分数值大于85,则说明是同一人,反之亦然。

如果操作不正确,可能会出现如下错误:

如果出现此类错误,具体可查询以下错误码:

至此本次基于node.js人脸识别之人脸对比全部完成。

其他可参考链接:https://blog.csdn.net/Hydra_xyc/article/details/80835389

小组成员:张佳晨、冉瑞婷、刘丹、张莹、庄子悦

基于node.js人脸识别之人脸对比的更多相关文章

  1. 基于Node.js的强大爬虫 能直接发布抓取的文章哦

    基于Node.js的强大爬虫 能直接发布抓取的文章哦 基于Node.js的强大爬虫能直接发布抓取的文章哦!本爬虫源码基于WTFPL协议,感兴趣的小伙伴们可以参考一下 一.环境配置 1)搞一台服务器,什 ...

  2. java 虹软ArcFace 2.0,java SDK使用、人脸识别-抽取人脸特征并做比对

    java人脸识别 虹软ArcFace 2.0,java SDK使用.人脸识别-抽取人脸特征并做比对 虹软产品地址:http://ai.arcsoft.com.cn/product/arcface.ht ...

  3. NodeBB – 基于 Node.js 的开源论坛系统

    NodeBB 是一个更好的论坛平台,专门为现代网络打造.它是免费的,易于使用. NodeBB 论坛软件是基于 Node.js 开发,支持 Redis 或 MongoDB 的数据库.它利用 Web So ...

  4. 基于 Node.js 平台,快速、开放、极简的 web 开发框架。

    资料地址:http://www.expressjs.com.cn/ Express 基于 Node.js 平台,快速.开放.极简的 web 开发框架. $ npm install express -- ...

  5. Pomelo:网易开源基于 Node.js 的游戏服务端框架

    Pomelo:网易开源基于 Node.js 的游戏服务端框架 https://github.com/NetEase/pomelo/wiki/Home-in-Chinese

  6. Fenix – 基于 Node.js 的桌面静态 Web 服务器

    Fenix 是一个提供给开发人员使用的简单的桌面静态 Web 服务器,基于 Node.js 开发.您可以同时在上面运行任意数量的项目,特别适合前端开发人员使用. 您可以通过免费的 Node.js 控制 ...

  7. 基于Node.js + jade + Mongoose 模仿gokk.tv

    原文摘自我的前端博客,欢迎大家来访问 http://www.hacke2.cn 关于gokk 大学的娱乐活动基本就是在寝室看电影了→_→,一般都会选择去goxiazai.cc上看,里面的资源多,质量高 ...

  8. 基于Node.js的实时推送 juggernaut

    基于Node.js的实时推送 juggernaut Juggernaut 基于 Node.js 构建.为浏览器和服务器端提供一个实时的连接,可在客户端和服务器端进行数据的实时推送,适合多角色游戏.聊天 ...

  9. 基于node.js构建微服务中的mock服务

    缘起 由于现在微服务越来越火了,越来越多的微服务融入到了日常开发当中.在开发微服务的时候,经常会遇到一个问题由于依赖于其他服务,导致你的进度受到阻碍.使你不得不先mock出你期望调用依赖服务的输出,来 ...

随机推荐

  1. CSS让高度百分百的方案

    一般用来上下所有居中,但是这时候auto的计算是全屏像素,从而得到满屏 position: fixed; left: 0px; right: 0px; top: 0px; bottom: 0px; m ...

  2. pipelineDB学习笔记-2. Stream (流)

    一.流的定义: 所谓的“流”(stream)在pipelineDB中是指那些被允许的数据库客服端推送到 Continuous View(连续视图) 的时序化数据的一种“抽象”.流中的每一个raw(数据 ...

  3. 基于ATxmega128的ASF串口应用

    1.编辑串口的配置参数,一般将这些参数放在conf_usart.h配置头文件中,本程序将这些参数放在user_board.h头文件中 #define USART_SERIAL &USARTD0 ...

  4. 深入探索Java设计模式(四)之享元模式

    享元模式适用于需要大量相同类型对象的情况.在此,设计布局可以减少创建多个对象的方式.对象在运行时会消耗资源,因此最好在内存中使用较少的对象.它减少了内存占用并利用了程序的整体性能.本文是在学习完优锐课 ...

  5. 跟着文档学习gulp1.1安装入门

    Step1:检查是否已经安装了node,npm 和 npX是否正确安装 Step2:安装gulp命令行工具(全局安装gulp) npm install --global gulp-cli Step3: ...

  6. RabbitMQ之交换机及spring整合

    交换机 交换机属性: Name:交换机名称 Type:交换机类型 direct.topic.fanout.headers Durability:是否需要持久化,true为持久化 Auto Delete ...

  7. Sql将一列数据拆分为多行显示的两种方法

    原始数据与期望结果有表tb, 如下:id          value----------- -----------1           aa,bb2           aaa,bbb,ccc欲按 ...

  8. 云原生技术之Docker入门

    1. 为什么需要容器? 下图是一个比较传统的软件架构 做过java的同学可能对上图的架构方式比较了解,我们通常会将一个应用程序生成一个war包,放到一个tomcat容器当中并在一台虚拟机(VM)中启动 ...

  9. Appium(八):Appium API(二) 元素等待、元素操作

    1. 元素等待 我们在使用脚本的时候,可能会由于网络.服务器处理.电脑等原因,我们想要找的元素没有加载出来,这个时候如果直接定位就可能会报错. 这个时候我们就可以设置元素等待了. 什么叫元素等待呢? ...

  10. 微信 电脑版 HOOK(WeChat PC Hook)- 定位dll获取数据和调用功能的地址

    方案一:CE搜索内存数据,OD断点查看堆栈方案二:使用旧版本的特征码,在新版本搜索方案三:借鉴WeTool的dll,用ida分析获取地址方案四:ida静态分析微信,看字符串和输出日志 源码: http ...