本节使用doCurlGetRequest函数来封装Face++的接口请求。我们在class文件夹下的faceStub.php文件中实现

一个faceStub类,封装请求Face++的相关接口。

实现代码:

class faceStub {

  // 请求Face++

    private static function requestToFace($interface, $data) {

      $data = array_merge($data, array('api_key'=>API_KEY, 'api_secret' => API_SECRET)) ;

      interface_log(DEBUG, 0, "url:  "  .  FACE_URL  .  $interface  .  "\ndata:"  .

      var_export($data, true) );

      $json = doCurlGetRequest(FACE_URL  .  $interface,  $data,  FACE_TIMEOUT) ;

      interface_log(DEBUG,  0,  'response:'  .  $json) ;

      $data = json_decode($json,  true) ;

      if(!$data || $data['error_code']) {

        return false;

      } else {

        return $data;

      }

    }

    // 创建Face++的Group

    public static function createGroup($groupName)  {

      $interface = 'group/create' ;

      $data = array(

             'group_name'  =>  $groupName

            );

      return faceStub::requestToFace($interface, $data) ;

    }

    // 检测图片中的人脸

    public static fuction detect($imageUrl)  {

      $interface = 'detection/detect' ;

      $data = array(

             'url' => $imageUrl 

            ) ;

      return faceStub::requestToFace($interface, $data);

    }

    // 搜索相似脸

    public static function search($faceId, $groupName, $count)  {

        $interface = 'recognition/search' ;

        $data = array(

                'key_face_id' => $faceId,

                'group_name' => $groupName,

                'count' => $count

              );

        return faceStub::requestToFace($interface, $data) ;

    }

    // 创建Person

    public static function createPerson($personName, $faceId, $groupName)  {

        $interface = 'person/create' ;

        $data = array(

                'person/create' ;

                'face_id' => $faceId,

                'group_name' => $groupName

              );

        return faceStub::requestToFace($interface, $data) ;

    }

    // 添加Face到Person

    public static function addFaceToPerson($personName, $faceId) {

        $interface = 'person/add_face' ;

        $data = array(

               'person_name' => $personName, 'face_id => $faceId'

               );

        return faceStub::requestToFace($interface, $data) ;

    }

    

    // 删除Person的Face

    public static function removeFaceFromPerson($personName, $faceId)  {

        $interface = 'person/remove_face' ;

        $data = array(

               'person_name' => $personName,

               'face_id' => $faceId

        );

        return faceStub::requestToFace($interface, $data) ;

    }

    // 获取session结果,session是train的返回

    public static function getSession($sessionId)  {

        $interface = 'info/get_session' ;

        $data = array(

               'session_id' => $sessionId

               );

        return faceStub::requestToFace($interface, $data) ;

    }

    // 获取Person结果, session是train的返回

    public static function getSeession($sessionId)  {

        $interface = 'info/get_session' ;

        $data = array(

               'session_id' => $sessionId

               );

        return faceStub::requestToFace($interface, $data) ;

    }

    // 获取Person的信息

    public static function getPersonInfo($personName)  {

        $interface = 'person/get_info' ;

        $data = array(

               'person_name' => $personName

               );

        return faceStub::requestToFace($interface, $data) ;

    }

}

    faceStub类中每个函数都对应到Face++的具体接口,这些都是findface需要使用到的,

如果您需要使用其他的接口,可以按照这个faceStub类的实现方法快速封装其他接口。

___________over___________

Face++接口封装的更多相关文章

  1. Java微信公众平台接口封装源码分享

    前言:      这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...

  2. C++ Redis mset 二进制数据接口封装方案

    C++ Redis mset 二进制数据接口封装方案 需求 C++中使用hiredis客户端接口访问redis: 需要使用mset一次设置多个二进制数据 以下给出三种封装实现方案: 简单拼接方案 在r ...

  3. hiredis异步接口封装并导出到Lua

    hiredis异步接口封装并导出到Lua(金庆的专栏 2017.1)hiredis 不支持 Windows, Windows 下使用 wasppdotorg / hiredis-for-windows ...

  4. 基于Verilog的带FIFO输出缓冲的串口接收接口封装

    一.模块框图及基本思路 rx_module:串口接收的核心模块,详细介绍请见“基于Verilog的串口接收实验” rx2fifo_module:rx_module与rx_fifo之间的控制模块,其功能 ...

  5. vue2.0 + vux (五)api接口封装 及 首页 轮播图制作

    1.安装 jquery 和 whatwg-fetch (优雅的异步请求API) npm install jquery --save npm install whatwg-fetch --save 2. ...

  6. 基于Zabbix API文档二次开发与java接口封装

    (继续贴一篇之前工作期间写的经验案例) 一.           案例背景 我负责开发过一个平台的监控报警模块,基于zabbix实现,需要对zabbix进行二次开发. Zabbix官方提供了Rest ...

  7. 微信小程序“一劳永逸”的接口封装

    前言 最近都在研究小程序了,我可以的! 需求 之前都是用vue来开发项目的,接口模块我特意封装了一下.感觉也可以记录一下 小程序的接口虽说简单,但是重复调用那么多,显得不专业(一本正经的胡说八道) 还 ...

  8. Plx9030通讯卡驱动开发与接口封装

    在学校的时候,曾经采用DDK+Driverstudio+VC6.0环境做过9054视频采集卡的驱动开发,回想起调试过程,记得最清楚的就是过无数次的计算机蓝屏重启....今天第一天来到新公司,老大就说你 ...

  9. java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)

    1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...

  10. sdk开发时,对外暴露的接口封装

    思考,用同步还是异步? 实质就是屏蔽一些东西,让使用者直接传参数 拿结果 而不用关心具体实现 eg.登陆接口 1.定义接口LoginCallBack,两个函数 请求成功和失败 public inter ...

随机推荐

  1. 安装SQL Server 2012遇到“需要更新的以前的Visual Studio 2010实例.”

    Microsoft Visual Studio 2010 Service Pack 1(exe) 下载链接:http://www.microsoft.com/zh-cn/download/confir ...

  2. MQTT之 Mosquitto hello world的使用

    服务端发布消息模式,客户端订阅: 终端一中启动 moquitto 服务器 shallbeThatIshallbe:mosquitto iamthat$ 1427293344: Opening ipv4 ...

  3. 大陆 Google play 开发者注册(2016)

    1:准备一个VPN, 如:  https://vpnso.com   收费的,使用一两年了,还不错,很稳定2:准备一张普通的银行卡或者信用卡就可以了,能正常绑定支付宝就行3:在全球付上面申请一个 虚拟 ...

  4. CentOS7安装Hadoop2.7完整流程

    总体思路,准备主从服务器,配置主服务器可以无密码SSH登录从服务器,解压安装JDK,解压安装Hadoop,配置hdfs.mapreduce等主从关系. 1.环境,3台CentOS7,64位,Hadoo ...

  5. REACTOS(193)与汇编编译器(69)的高人

    REACTOS(193)与汇编编译器(69)的高人http://blog.csdn.net/caimouse ReactOS编译成VS工程1: 首先从https://www.reactos.org/w ...

  6. 写Java程序让Jvm崩溃

    package jvm; public class HeapCrash { public static void main(String[] args) { //Object[] o = {“abc” ...

  7. Drawable(4)LevelListDrawable

    Levellist 显示时不像scale list 或 layout list那样要用代码设置一下,可以直接显示.改变level时才用代码. res:level_list.xml <?xml v ...

  8. const和readonly的区别

    http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html http://www.codeproject.com/Tips/803 ...

  9. [HDOJ2874]Connections between cities(LCA, 离线tarjan)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2874 这题有不连通的情况,特别注意. 觉得是存query的姿势不对,用前向星存了一遍,还是T…… /* ...

  10. git push 提示

    我运行git push -u origin master  时提示如下: To git@github.com:userName/project.git ! [rejected] master -> ...