本节使用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. longene QQ 安装目录

    longene QQ 在Ubuntu 12.04上的安装目录如下: wy@wy-Inspiron-7420:~/.longene/qq/drive_c/Program Files/Tencent/QQ ...

  2. P1023 奶牛的锻炼

    P1023 奶牛的锻炼 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 USACO 描述 奶牛Bessie有N分钟时间跑步,每分钟她可以跑步或者休息.若她在第 ...

  3. TCL语言笔记:TCL练习二

    一.练习 1.二进制转十进制 proc b2d {b} { ;set len [string length $b] } {$i<$len} {incr i} { incr sum [expr , ...

  4. Generic repository pattern and Unit of work with Entity framework

    原文 Generic repository pattern and Unit of work with Entity framework Repository pattern is an abstra ...

  5. The Introduction of Java Memory Leaks

    One of the most significant advantages of Java is its memory management. You simply create objects a ...

  6. set集合_定长

    //set集合的操作        //便利初始化函数        NSSet *set1 = [[NSSet alloc] initWithObjects:@"aa", @&q ...

  7. 机器学习 —— 概率图模型(Homework: MCMC)

    除了精确推理之外,我们还有非精确推理的手段来对概率图单个变量的分布进行求解.在很多情况下,概率图无法简化成团树,或者简化成团树后单个团中随机变量数目较多,会导致团树标定的效率低下.以图像分割为例,如果 ...

  8. YASKAWA电机控制(2)---调试

    2015 5 23 基础调试—点动 上次接线由于没有接地,导致外壳带电,非常危险. 由于上次接线端子被弄坏,这次自己重做.由于没有压线钳,只用尖嘴钳把线压近端子,有可能会松动. 接线的时候Lc1.Lc ...

  9. [置顶] 手机通过socket控制电脑关机,重启,注销等功能

    服务端 package com.pc; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOE ...

  10. DataGridView控件的使用---添加行

    最简单的方法 可以静态绑定数据源,这样就自动为DataGridView控件添加相应的行. 假如需要动态为DataGridView控件添加新行,方法有很多种,下面简单介绍如何为DataGridView控 ...