热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

NodeJS中怎么实现一个人脸识别功能

这期内容当中小编将会给大家带来有关NodeJS中怎么实现一个人脸识别功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可

这期内容当中小编将会给大家带来有关NodeJS中怎么实现一个人脸识别功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

既然百度提供了Node.js版的SDK,那我们可以使用SDK先快速进入开发。首先进入百度AI:

https://ai.baidu.com/

NodeJS中怎么实现一个人脸识别功能

登录成功进入控制台,点击左侧人脸识别,进入开始创建应用

NodeJS中怎么实现一个人脸识别功能

NodeJS中怎么实现一个人脸识别功能

创建成功后进入管理应用,可以得到开发需要的APPID,API KEY,SECRET KEY,得到这三个参数值之后我们去下载一份Node.js版本的人脸识别SDK:

https://ai.baidu.com/sdk#bfr

NodeJS中怎么实现一个人脸识别功能准备工作全部完成,我们接下来新建一个Node.js项目。然后将解压后的SDK放进Node项目中。

NodeJS中怎么实现一个人脸识别功能

可以看到我们已经将解压后的SDK放到我们的项目中,现在在终端进入SDK,然后安装SDK所需的依赖,命令为:

npm  install

NodeJS中怎么实现一个人脸识别功能

然后回到项目主目录,将整个SDK作为依赖,在主目录安装依赖,命令为:

npm  install  baidu-aip.sdk

到这里引入SDK到我们本地项目就完成了,接下来我们来看下SDK文档:

NodeJS中怎么实现一个人脸识别功能

我们可以先写个接口测试下第一个接口:人脸检测

首先,我们将我们应用的三个秘钥保存在config.js

NodeJS中怎么实现一个人脸识别功能

创建一个client对象,调用服务接口进行使用。

NodeJS中怎么实现一个人脸识别功能

发送网络请求SDK中已经对request模块进行了封装,我们可以根据自己需要对request的参数进行设置。

NodeJS中怎么实现一个人脸识别功能

接下来我们可以进行人脸检测的调用,SDK已经将接口给我们封装好了,人脸检测的接口分为带可选参数与不带可选参数。有什么区别呢?我们可以看下接口请求参数:

NodeJS中怎么实现一个人脸识别功能

可以看到我们必传的参数有两个:imageimageType

image就是图片可以为url, base64以及FACE_TOKEN而imageType就是图片类型,可选值有URL, BASE64, FACE_TOKEN。

其他三个参数是可选的参数,所以我们先来看看不带可选参数的接口如何进行调用:

client.detect(image, imageType)

我们调用该方法,传参image为网络图片url以及imageTypeURL,看看会有什么效果

NodeJS中怎么实现一个人脸识别功能

调用下接口我们可以看到对图片进行了解析,返回了一系列数据

NodeJS中怎么实现一个人脸识别功能

这么多参数究竟干嘛的呢?我们可以看下官方文档对返回参数的说明:

NodeJS中怎么实现一个人脸识别功能

因为返回参数过多,我就不一一截屏,这里贴下NodeSDK文档,可以自行查看:

https://cloud.baidu.com/doc/FACE/Face-Node-SDK.html#.E4.BA.BA.E8.84.B8.E6.A3.80.E6.B5.8B

有了文档我们就可以知道返回参数的意思了

face_num代表在图片中检测到一张人脸face_list就包含人脸的具体信息  location对人脸相对于图片位置进行了定位,客户端就可以根据位置信息对人脸进行特效的展示。  face_token就是图片解析生成的一个唯一标识的字符串,解析image可以直接传入face_token  face_probability代表图片是一张人脸的可能程度,1为概率最大  angle则为人脸旋转程度

解析结果会返回人脸相对于图片的定位,客户端就可以针对位置信息对人脸进行聚焦等操作。第二个接口可选参数又是什么样的呢?我们可以再看看刚才请求参数:

NodeJS中怎么实现一个人脸识别功能

我们有三个可选传的参数:

face_field:指定返回信息max_face_num:可检测最多人脸数量face_type:照片类型

我们调用detect方法就需要多传options参数,方法为:

client.detect(image, imageType, options)

我们使用该方法指定返回年龄,指定最大检测人脸为2,照片类型为生活照

NodeJS中怎么实现一个人脸识别功能

我们可以看下运行效果:

NodeJS中怎么实现一个人脸识别功能

我们可以看到返回多了一个age字段,解析返回的预估年龄。

第一个接口到这里没问题了,但是会有一个疑问?我们就是调用了detect方法,为什么就直接返回解析信息呢?其实完整的流程应该是:

通过appID及api_secret获取access_token凭证发起http请求人脸检测接口,检测成功返回数据

但是获取access_token以及发起http请求这部分SDK其实都已经封装完成,所以我们可以直接使用。我们可以在刚才调用封装的http请求里面打印请求参数,然后再次发起请求:

NodeJS中怎么实现一个人脸识别功能我们会看到请求人脸检测的接口已经完全封装好了,你只需要调用detect方法,中间的步骤SDK全部帮你进行处理了。

人脸注册

然后接下来我们来看看人脸注册接口,人脸注册该人脸就会与我们设置的groupIduserId进行绑定,人脸注册可以调用方法:

client.addUser(image, imageType, groupId, userId)

我们先看看发起请求需要携带的参数列表:

NodeJS中怎么实现一个人脸识别功能

前两个参数就不多说了,group_id是组iduser_id为用户id。我们可以写个接口看下效果:

NodeJS中怎么实现一个人脸识别功能

我们调用client.addUser()方法,进行人脸注册,我们看下运行效果:

NodeJS中怎么实现一个人脸识别功能

老规矩,贴下文档关于返回参数的解释:

NodeJS中怎么实现一个人脸识别功能

与人脸解析一样,选传参数可以对用户资料,图片质量等参数进行选传,注册成功该人脸就会绑定传的用户资料。这里就不过多解释了,具体可以看下文档自行测试。

人脸搜索

上一个接口我们注册了一个人脸,我们可以调用人脸搜索接口看看是否能搜索到该人脸。首先看看人脸搜索需要调用的方法:

client.search(image, imageType, groupIdList)

这个方法需要解释的第三个参数,在指定的组里进行搜索人脸,如果同时在多个组里搜索就用,隔开。老规矩我们先看下调用本方法的请求参数列表:

NodeJS中怎么实现一个人脸识别功能

我们使用不带选传参数调用人脸搜索接口测试:

NodeJS中怎么实现一个人脸识别功能

接下来调用下看下人脸搜索是否有效果:

NodeJS中怎么实现一个人脸识别功能

可以看到我们在组1中找到了该人脸,我们可以测试下如果在不存在该人脸的组中查询会有什么效果呢?

NodeJS中怎么实现一个人脸识别功能

上述就是小编为大家分享的NodeJS中怎么实现一个人脸识别功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程笔记行业资讯频道。


推荐阅读
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 择要:Fundebug的JavaScript毛病监控插件同步支撑Vue.js异步毛病监控。Vue.js从降生至今已5年,尤大在本年2月份宣布了严重更新,即Vue2.6。更新包含新增 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 在OpenShift上部署基于MongoDB和Node.js的多层应用程序
    本文档详细介绍了如何在OpenShift 4.x环境中部署一个包含MongoDB数据库和Node.js后端及前端的多层应用程序。通过逐步指导,读者可以轻松完成整个部署过程。 ... [详细]
  • 利用 JavaScript 和 Node.js 验证时间的有效性
    本文探讨了如何使用 JavaScript 和 Node.js 验证时间的有效性。通过编写一个 `isTime` 函数,我们可以确保输入的时间格式正确且有效。该函数利用正则表达式匹配时间字符串,检查其是否符合常见的日期时间格式,如 `YYYY-MM-DD` 或 `HH:MM:SS`。此外,我们还介绍了如何处理不同时间格式的转换和验证,以提高代码的健壮性和可靠性。 ... [详细]
  • Hyperledger Fabric 1.4 节点 SDK 快速入门指南
    本文将详细介绍如何利用 Hyperledger Fabric 1.4 的 Node.js SDK 开发应用程序。通过最新版本的 Fabric Node.js SDK,开发者可以更高效地构建和部署基于区块链的应用,实现数据的安全共享和交易处理。文章将涵盖环境配置、SDK 安装、示例代码以及常见问题的解决方法,帮助读者快速上手并掌握核心功能。 ... [详细]
  • 微信小程序支付官方参数小程序中代码后端发起支付代码支付回调官方参数文档地址:https:developers.weixin.qq.comminiprogramdeva ... [详细]
  • MVC框架下使用DataGrid实现时间筛选与枚举填充
    本文介绍如何在ASP.NET MVC项目中利用DataGrid组件增强搜索功能,具体包括使用jQuery UI的DatePicker插件添加时间筛选条件,并通过枚举数据填充下拉列表。 ... [详细]
  • 在使用 Ant Design 的 SubMenu 组件时,遇到无法读取 'isRootMenu' 属性的 TypeError。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 探讨了生成时间敏感的一次性伪随机密码的方法,旨在通过加入时间因素防止重放攻击。 ... [详细]
  • 本文详细介绍了 Node.js 中 OS 模块的 arch 方法,包括其功能、语法、参数以及返回值,并提供了具体的使用示例。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 本文介绍了 Vue 开发的入门指南,重点讲解了开发环境的配置与项目的基本搭建。推荐使用 WebStorm 作为 IDE,其下载地址为 。安装时请选择适合您操作系统的版本,并通过 获取激活码。WebStorm 是前端开发者的理想选择,提供了丰富的功能和强大的代码编辑能力。 ... [详细]
  • 掌握PHP编程必备知识与技巧——全面教程在当今的PHP开发中,了解并运用最新的技术和最佳实践至关重要。本教程将详细介绍PHP编程的核心知识与实用技巧。首先,确保你正在使用PHP 5.3或更高版本,最好是最新版本,以充分利用其性能优化和新特性。此外,我们还将探讨代码结构、安全性和性能优化等方面的内容,帮助你成为一名更高效的PHP开发者。 ... [详细]
author-avatar
壹滒_918
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有