百度人脸识别模块使用分享

2023-11-05

【本文出自APICloud官方论坛,感谢鲍永道的分享。】

首先介绍下百度人脸识别模块(baiduFaceRec):
baiduFaceRec模块封装了百度AI人脸识别功能,使用此模块可实现百度人脸检测(包括age,beauty,expression,faceshape,gender,glasses,landmark,race,quality,facetype信息)、人脸对比功能(比对两张图片中人脸的相似度,并返回相似度分值)。暂仅支持 android 平台。

不啰嗦,直接上代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/html&quot;>
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport"
      content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
<title>frame2</title>
<link rel="stylesheet" href="../css/api.css">
<link rel="stylesheet" href="../css/aui.css">
<style>
    html, body {
        background: #ffffff;
    }

    .my-card {
        border: solid 1px #dddddd;
        margin: 10px;
    }

    .aui-btn-block {
        margin-bottom: 10px;
    }
</style>

</head>
<body>
<section class="aui-content-padded my-card">

<div class="aui-card-list">
    <div class="aui-card-list-header">
        百度人脸识别(V3版本)自定义模块
    </div>
    <div class="aui-card-list-content-padded">
        人脸识别
    </div>
    <div class="aui-card-list-footer">
        2018-06-03
    </div>
</div>

</section>
<div class="aui-content-padded">

<p>
<div class="aui-btn aui-btn-info aui-btn-block">获取access_token</div>
</p>
<p>
<div class="aui-btn aui-btn-info aui-btn-block">人脸检测</div>
</p>
<p>
<div class="aui-btn aui-btn-info aui-btn-block">人脸对比</div>
</p>

</div>
</body>
</html>
<script src="../script/api.js"></script>
<script>

var baiduFaceRec = null;
var UIAlbumBrowser = null;

apiready = function () {
    baiduFaceRec = api.require('baiduFaceRec');
    UIAlbumBrowser = api.require('UIAlbumBrowser');
};

//获取access_token
function getAuth() {
    var params = {
        ak: 'your ak',
        sk: 'your sk'
    };

baiduFaceRec.getAuth(params, function (ret, err) {

if (ret) {
    console.log(JSON.stringify(ret));
    alert('access_token=' + ret.access_token);
} else {
    console.log(err.msg);
    alert('错误信息:' + err.msg);
}

})

}

//人脸检测
function detect() {
    //先获取access_token
    var params = {
        ak: 'your ak',
        sk: 'your sk'
    };
    baiduFaceRec.getAuth(params, function (ret, err) {
        if (ret) {
            console.log(JSON.stringify(ret));
            var access_token = ret.access_token;
            //选择照片或拍照
            api.actionSheet({
                title: '选择照片',
                cancelTitle: '取消',
                buttons: ['拍照', '手机相册']
            }, function (ret, err) {
                if (ret) {
                    console.log(ret.buttonIndex);
                    if (ret.buttonIndex != 3) {
                        var sourceType = ret.buttonIndex;
                        //获取图片
                        api.getPicture({
                            sourceType: (sourceType == 1) ? 'camera' : 'album',
                            encodingType: 'jpg',
                            mediaValue: 'pic',
                            destinationType: 'url',
                            allowEdit: true,
                            saveToPhotoAlbum: false
                        }, function (ret, err) {
                            if (ret) {
                                console.log(ret.data);
                                var filePath = ret.data;
                                var params = {
                                    filePath: filePath,
                                    access_token: access_token
                                };
                                //人脸检测
                                baiduFaceRec.detect(params, function (ret, err) {
                                    if (ret) {
                                        console.log(JSON.stringify(ret));
                                        alert('人脸检测数据' + JSON.stringify(ret.result.face_list));
                                    } else {
                                        console.log(err.msg);
                                    }
                                })
                            } else {
                                console.log(JSON.stringify(err));
                                alert(JSON.stringify(err));
                            }
                        })
                    } else {
                        return false;
                    }
                }
            });
        } else {
            console.log(err.msg);
            alert('错误:' + ret.msg);
        }
    });
}

//人脸对比
function match() {
    //先获取access_token
    var params = {
        ak: 'your ak',
        sk: 'your sk'
    };
    baiduFaceRec.getAuth(params, function (ret, err) {
        if (ret) {
            console.log(JSON.stringify(ret));
            var access_token = ret.access_token;
            //得到对比图片
            UIAlbumBrowser.open({
                max: 2,
                styles: {
                    bg: '#fff',
                    mark: {
                        icon: '',
                        position: 'bottom_left',
                        size: 20
                    },
                    nav: {
                        bg: 'rgba(0,0,0,0.6)',
                        titleColor: '#fff',
                        titleSize: 18,
                        cancelColor: '#fff',
                        cancelSize: 16,
                        finishColor: '#fff',
                        finishSize: 16
                    }
                },
                rotation: true
            }, function (ret) {
                if (ret) {
                    var filePath1 = ret.list[0].path;
                    var filePath2 = ret.list[1].path;
                    var params = {
                        filePath1: filePath1,
                        filePath2: filePath2,
                        access_token: access_token
                    };
                    //人脸对比
                    baiduFaceRec.match(params, function (ret, err) {
                        if (ret) {
                            console.log(JSON.stringify(ret));
                            alert('人脸检测数据' + JSON.stringify(ret));
                        } else {
                            console.log(err.msg);
                        }
                    })
                }
            });
        } else {
            console.log(err.msg);
            alert('错误:' + ret.msg);
        }
    });
}

</script>
使用模块前需要先到百度AI开发者中心创建应用,获取ak和sk,然后进行身份验证,获取返回的access_token,建议每次进行人脸识别接口时先获取access_token(30期限),然后每次请求识别接口也传入access_token,这样保证每次都请求ok。

另外的两个人脸识别接口,一个是人脸识别,一个是人脸对比。

人脸识别主要是识别人的脸部相关参数,对应的参数很多,我就不一一说明了,文档有详细说明。另外就是人脸对比,对比两张脸的相似度值,可以根据相似度值来判断两张人脸是否是同一个人,在项目上应用于人脸对比验证,应该会使用的比较多。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

百度人脸识别模块使用分享 的相关文章

  • JW Player javaScript API 不工作

    我使用 jwplayer version 5 10 2295 和浏览器 chrome 25 My code jwplayer container setup file path width 300px height 100px autost
  • Eslint 从另一个文件确定全局变量

    我试图以这样的方式设置 ESLint 使其在对实际目标文件进行 linting 之前解析全局声明文件 这样我就不必将所有确实是全局的函数和变量声明为全局 而是让解析器弄清楚 In 一些 模块 js function do something
  • 在 jQuery .live() 方法中模拟“焦点”和“模糊”

    Update 从 jQuery 1 4 开始 live 现在支持focusin and focusout events jQuery http www jquery com currently1 doesn t support blur o
  • 如何在 DOM 中的每个元素中调用函数,即使它们是动态创建的

    我想对 DOM 上的特定元素调用函数 例如 red css backgroundColor pink 它适用于 DOM 中已经存在的任何元素 但我也希望在动态添加到 DOM 的元素中调用此方法 我尝试过类似的事情 red on functi
  • 水平滚动的表格上的“粘性”标题......完全不可能?

    经过过去几个小时的研究后 我开始认为这是不可能的 即使在最新的浏览器上也是如此 HTML table具有水平滚动的元素 带有 粘性 thead在顶部 作为垂直滚动的周围网页的一部分 这是我的尝试 a height 100px backgro
  • 如何使 d3 饼图响应式?

    我有一个 PIE 图表 它工作正常 但我无法使其具有响应能力和可调整大小 我需要它与移动浏览器和 iPad 等兼容 div div
  • 设置双指缩放时精确的滚动位置

    我正在创建一个地图应用程序 它将标记图像放置在画布上并滚动到它 我正在使用浏览器的捏缩放和滚动来放大 缩小地图 然而 我注意到有一些奇怪的行为 我想知道如何解决它 这有点难以解释 但我们开始吧 假设您处于网页的标准缩放级别 无法进一步缩小
  • 此页面上的脚本导致 ie 运行缓慢

    问题就在标题中 IE 行为异常 并说有一个脚本运行缓慢 FF 和 Chrome 没有这个问题 我怎样才能找到问题所在 那个页面有很多JS 手动检查不是一个好主意 EDIT 这是我正在处理的一个项目的页面 但我需要一个工具来查找问题 End
  • karma/jasmine 控制台更详细的测试结果

    我使用 Karma 和 Jasmine 进行 javascript 单元测试 假设我有一个失败的测试 如下所示 expect objectA toEqual expectedObjectA 当失败时 我看到控制台上转储了两个对象 并显示一条
  • 如果一个对象结构与另一个对象结构不匹配/不匹配,如何引发异常

    我将读取格式正确的用户输入对象 也就是说 输入对象现在可以具有接口中未定义的任何键或子结构 如果用户提供了无效的对象 我如何抛出异常 预定义接口 export interface InputStructureInterface tableN
  • 如何将 arraylist 从 servlet 传递到 javascript?

    我通过在属性中设置数组列表并将其转发到 jsp 来从 servlet 传递数组列表 Servlet ArrayList
  • 当我多次调用 requestAnimationFrame 时会发生什么

    我的意思是一次调用多个具有相同功能的 requestAnimationFrame function Draw DoSomething function AFunc prepare something requestAnimationFram
  • 模板中带有 ng-if 的 angularjs 指令

    我正在构建一个在模板内使用 ng if 的指令 奇怪的是 提供给链接函数的元素没有扩展ng if代码 它只是ng if的注释行 经过一番尝试 我发现通过将链接代码包装在 timeout 中似乎可以使其正常工作 但我想知道这是否不是正确的处理
  • javascript 是否有等效的 __repr__ ?

    我最接近Python的东西repr这是 function User name password this name name this password password User prototype toString function r
  • 如何在 webpack 中渲染嵌套的 SASS?

    采取以下CSS MyComponent color blue Button color red 以及以下 React 组件 import React from react import classes from MyComponent sc
  • Javascript 浮点乘以 100 仍然有错误

    我有一个货币字段的文本输入 我在字段中输入 33 91 并在尝试使用 乘以 100 技术时得到以下结果 var curWth parseInt trans withdraw index val 100 3390 var curWth par
  • Service Worker 与 Shared Worker

    Service Worker 和 Shared Worker 有什么区别 我什么时候应该使用 Service Worker 而不是 Shared Worker 反之亦然 Service Worker 具有共享 Worker 之外的附加功能
  • ThreeJS 中阴影的奇怪行为

    所以我有一个 ThreeJS 场景 并且添加了一些球体 多材质 我还添加了定向光 this light new THREE DirectionalLight 0xFFFFFF 1 this light position set 2 10 2
  • 如何映射轮播的子项数组?

    我正在尝试将 Carousel 组件包装在映射对象数组周围作为组件的子级 目前我只能让映射创建映射对象的 1 个子对象 轮播需要像这样
  • 将多维数组转换为单数组(Javascript)

    我有一个对象数组 来自 XLSX js 解析器 因此其长度和内容各不相同 表示已给予项目的资助 简化后 它看起来像这样 var grants id p 1 location loc 1 type A funds 5000 id p 2 lo

随机推荐

  • 【U盘量产工具】热插拔导致U盘进入写保护——安国主控AU6989SN-GT

    2022 1 20 前言 前两天我爸的车的中控CD机坏了 嫌修车店修太贵了 又不需要升级成触控导航的中控 就想在淘宝上买了一个原厂一模一样的换上 到货了觉得修车店装一下又得几百块 就让我帮他一起装回去了 那东西居然是2011年产的 到现在已
  • linux socat_Linux多用途中继Socat命令教程和示例

    linux socat Linux provides different philosophy and use cases from system point of view socat is very interesting comman
  • 精通SuiteSparse应用与架构01 compile and install

    solve problem libcublas so no such file or directory as cuda10 nvidia put has shiftted the cublas to usrlib x86 64linux
  • 时序预测

    文章目录 效果一览 文章概述 源码设计 参考资料 效果一览 文章概述 时序预测 Matlab实现基于GRNN广义回归神经网络的电力负荷预测模型 1 Matlab实现基于GRNN广义回归神经网络的电力负荷预测模型 2 单变量时间序列预测 3
  • PID控制器的输入量和输出量的物理关系解释

    PID控制器的输入量和输出量的物理关系解释 其实 PID基本找不到输入与输出的单位关系 但是有很强的数的关系 给定的值与反馈的值还存在偏差时 就会调整输出以达到输入与反馈的平衡 在这里 给定的电流值 反馈的也是电流值 PWM控制的是实际的输
  • 一分钟看懂IoC 原理

    本人的概念总结 一分钟让你懂得Ioc原理 1 1 IoC是什么 Ioc Inversion of Control 即 控制反转 不是什么技术 而是一种设计思想 在开发中 Ioc意味着将你设计好的对象交给容器控制 而不是传统的在你的对象内部直
  • 蓝桥杯之单词分析

    题目描述 小蓝正在学习一门神奇的语言 这门语言中的单词都是由小写英文字母组成 有些单词很长 远远超过正常英文单词的长度 小蓝学了很长时间也记不住一些单词 他准备不再完全记忆这些单词 而是根据单词中哪个字母出现得最多来分辨单词 现在 请你帮助
  • 延时函数介绍

    文章目录 基本介绍 一 sleep 二 usleep 三 mdelay 四 udelay 五 ndelay 在操作系统中和单片机处理延时方式就完全不一样了 不可能是使用for循环浪费系统资源 而是有专门的接口函数 基本介绍 Linux 中常
  • 简洁而实用的NAS导航页——Homarr

    前言 为了更好管理家庭内网中部署的各个服务 尤其访问NAS docker中的容器 之前看过一些类似的导航面板 其中这个界面看上去十分简洁 这里自己就记录和分享一下搭建过程 官方网站 Home Homarr Docs 个人环境 支持docke
  • violin plot 小提琴图 matlab R语言 Python

    最近用到violin图 在此总结制作此图的步骤 matlab 需先下载函数文件 https ww2 mathworks cn matlabcentral fileexchange 45134 violin plot 函数中有默认添加 中位数
  • GDB调试详解

    文章目录 调试信息 启动调试 调试进程 调试core文件 GDB调试命令 run continue break backtrace 与 frame info break enable disable delete list print pt
  • 基于深度学习的人脸表情识别开发

    目前深度学习很流行 很大程度减轻了图像开发的难度 表情识别是图像算法的重要研究方向 本文提供一种基于深度学习的表情识别方法 1 获取模型 深度学习的框架比较多 有TF CAFFE PYTORCH KERAS等 然后有很多网络比如resnet
  • 2022年度【产业数字化金铲奖】重磅来袭!

    出品 产业家 第二届金铲奖来了 过去的一年时间里 产业家清晰地看到 数实融合的潮水更加汹涌澎湃且势不可挡 越来越多的企业开始寻求数字化转型 它们来自金融 工业 农业 医疗 能源等等 产业数字化 已经成为当代中国的主旋律 在新的主旋律中 被看
  • OpenWrt之时区设置(夏令时设置)

    今天遇到一个客户关于设置时区问题 涉及到夏令时区 查阅一些资料终于搞明白了 记录如下 因为openwrt是基于linux内核 所以记录一下Linux的时间和时区设置 Linux的时间和时区设置 在linux中与时间相关的文件有 etc lo
  • 如何使用eclipse软件创建一个Java项目?

    同学们在参加Java的时候老师肯定会教给你们如何去创建一个项目 这里怕有些同学没记住 所以单独为大家分享一篇如何使用eclipse软件创建一个Java项目教程 感觉有用的话收藏转发一下 eclipse创建Java项目教程 1 首先我们需要打
  • 将一个Android项目作为另一个Android Library给其他项目使用

    一 eclipse中的使用 开发中如果使用eclipse将一个Android工程作为Android Library给其他项目使用 需要实现的步骤如下 1 将android工程设为库 选择工程右击选择 property gt Android
  • Flutter Plugin调用Native APIs

    关键词 Flutter Flutter Plugin Platform Channel Method Channel Flutter Package Flutter插件 Flutter是Google使用Dart语言开发的一套移动应用开发框架
  • 微信小程序 之 发布流程

    1 前期准备 先想好你的小程序是用来做什么的 是电商 服务预约 知识付费 产品展示 还是团队管理 酒店预订 主要面向的人群都是哪些 现在小程序类型繁多 你一定要对自己有清晰的定位 明确的目标 才能避免把小程序做得乱七八糟 让自己的小程序真正
  • 菜鸟操作:QString和QMap转化(QMap嵌套QMap)

    学习QT的时候遇到一个问题 我想要将QMap转成QString 用于socket通信 查了网上找不到我想到的效果 然后就用一个比较粗糙的做法来实现 以下代码是对于二级QMap操作的 主要思路 将QMap中的数据全都放到QString中 包括
  • 百度人脸识别模块使用分享

    本文出自APICloud官方论坛 感谢鲍永道的分享 首先介绍下百度人脸识别模块 baiduFaceRec baiduFaceRec模块封装了百度AI人脸识别功能 使用此模块可实现百度人脸检测 包括age beauty expression