Face++接口封装
本节使用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++接口封装的更多相关文章
- Java微信公众平台接口封装源码分享
前言: 这篇博客是在三月初动手项目的时候准备写的,但是为了完成项目只好拖延时间写这篇博客,顺便也可以在项目中应用我自己总结的的一些经验.今天看来,这些方法的应用还是可以的,至少实现了我之前的 ...
- C++ Redis mset 二进制数据接口封装方案
C++ Redis mset 二进制数据接口封装方案 需求 C++中使用hiredis客户端接口访问redis: 需要使用mset一次设置多个二进制数据 以下给出三种封装实现方案: 简单拼接方案 在r ...
- hiredis异步接口封装并导出到Lua
hiredis异步接口封装并导出到Lua(金庆的专栏 2017.1)hiredis 不支持 Windows, Windows 下使用 wasppdotorg / hiredis-for-windows ...
- 基于Verilog的带FIFO输出缓冲的串口接收接口封装
一.模块框图及基本思路 rx_module:串口接收的核心模块,详细介绍请见“基于Verilog的串口接收实验” rx2fifo_module:rx_module与rx_fifo之间的控制模块,其功能 ...
- vue2.0 + vux (五)api接口封装 及 首页 轮播图制作
1.安装 jquery 和 whatwg-fetch (优雅的异步请求API) npm install jquery --save npm install whatwg-fetch --save 2. ...
- 基于Zabbix API文档二次开发与java接口封装
(继续贴一篇之前工作期间写的经验案例) 一. 案例背景 我负责开发过一个平台的监控报警模块,基于zabbix实现,需要对zabbix进行二次开发. Zabbix官方提供了Rest ...
- 微信小程序“一劳永逸”的接口封装
前言 最近都在研究小程序了,我可以的! 需求 之前都是用vue来开发项目的,接口模块我特意封装了一下.感觉也可以记录一下 小程序的接口虽说简单,但是重复调用那么多,显得不专业(一本正经的胡说八道) 还 ...
- Plx9030通讯卡驱动开发与接口封装
在学校的时候,曾经采用DDK+Driverstudio+VC6.0环境做过9054视频采集卡的驱动开发,回想起调试过程,记得最清楚的就是过无数次的计算机蓝屏重启....今天第一天来到新公司,老大就说你 ...
- java:Session(概述,三层架构实例(实现接口封装JDBC),Session实现简单购物车实例)
1.Session概述: Session:在计算机中,尤其是在网络应用中,称为“会话控制”.Session 对象存储特定用户会话所需的属性及配置信息.这样,当用户在应用程序的 Web 页之间跳转时,存 ...
- sdk开发时,对外暴露的接口封装
思考,用同步还是异步? 实质就是屏蔽一些东西,让使用者直接传参数 拿结果 而不用关心具体实现 eg.登陆接口 1.定义接口LoginCallBack,两个函数 请求成功和失败 public inter ...
随机推荐
- 用 EasyBCD 在 Win7/8 中硬盘安装 Ubuntu
写在前面: 1. 我装的是ubuntu 13.10 64位,不一样的地方是,从casper文件夹复制出来的文件不是vmlinuz,而是vmlinuz.efi,相应的,menu.lst里也要将vmlin ...
- 李洪强iOS开发之【Objective-C】09-空指针和野指针
一.什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0. 下面两个都是空指针 ...
- SpringMVC学习总结(四)——基于注解的SpringMVC简单介绍
SpringMVC是一个基于DispatcherServlet的MVC框架,每一个请求最先访问的都是 DispatcherServlet,DispatcherServlet负责转发每一个Request ...
- jQuery插件开发(转)
jQuery插件开发 - 其实很简单 [前言]jQuery已经被广泛使用,凭借其简洁的API,对DOM强大的操控性,易扩展性越来越受到web开发人员的喜爱,我在社区也发布了很多的jQuery插件,经常 ...
- MyEclipse 利用反向功能生成Java 实体类
1.Window -> Open Perspective -> MyEclipse Database Explorer 到DB Broswer界面 2.右键 -> New,新建一个数 ...
- 利用 java.lang.Runtime.addShutdownHook() 钩子程序,保证java程序安全退出
以前在开发时只知道依靠数据库事务来保证程序关闭时数据的完整性. 但有些时候一个业务上要求的原子操作,不一定只包括数据库,比如外部接口或者消息队列.此时数据库事务就无能为力了. 这时我们可以依靠java ...
- 利用 img 和 script 发送跨域请求
利用img.src可以发送http请求,但是发送http请求不是img.src的真正用意. 同样,用script.src去请求jsonp格式的接口数据也不是script元素的最初设计用途. 但是这些歪 ...
- 【原创】30分钟入门 github
很久没更新了,这篇文章重点在github的入门使用,读者可以下载github for windows shell,边看边操作,加深印象. 好了,30分钟的愉快之旅开始吧: 一.github使用的注意事 ...
- Android开发之定义接口暴露数据
写了一个网络请求的工具类,然后想要获取到网络请求的结果,在网络工具类中写了一个接口,暴露除了请求到的数据 代码: package com.lijingbo.knowweather.utils; imp ...
- 面试题_89_to_92_单元测试 JUnit 面试题
89)如何测试静态方法?(答案)可以使用 PowerMock 库来测试静态方法. 90)怎么利用 JUnit 来测试一个方法的异常?(答案) 91)你使用过哪个单元测试库来测试你的 Java 程序?( ...