zoukankan      html  css  js  c++  java
  • 百度人脸识别模块使用分享

     首先介绍下百度人脸识别模块(baiduFaceRec):

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

    不啰嗦,直接上代码:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/html">
    <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。

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

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

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

  • 相关阅读:
    luogu CF804D Expected diameter of a tree |Tarjan+樹的直徑+前綴和+二分查找
    luogu CF25C Roads in Berland |最短路floyd
    自觉日志·1·再现曾经的自觉
    祝福您新年快乐!
    自觉体验十一 体验祝福,与弘誓大愿!
    自觉体验 十 体验失忆
    自觉体验 六 手语与结印
    自觉体验 一  闲来无事,闭目养神
    我将离开屏幕前的“      ”
    第五章  自觉与【转载】《大念处经》
  • 原文地址:https://www.cnblogs.com/APICloud/p/10343005.html
Copyright © 2011-2022 走看看