微软emotion(表情识别)的api调试和应用

hi,all,最近离考试还有一段时间,这里分享一些最近我调试微软的表情识别的api接口的一些心得(各种坑)。

简单介绍微软的emotion api

首先贴出api地址,微软还很贴心的给出了console的一个调试页面,有没有感动的哭了,呜呜呜。。。首先看他的官方解释: <em>情感的API测试以图像作为输入,并返回的信心在一组情绪每个人脸在图像中,以及包围盒的脸上,从脸的API。情绪检测幸福、悲伤、惊讶、愤怒,恐惧,轻蔑、厌恶或中性。这些情感是相通的跨文化普遍通过基本相同的面部表情,在确定情感的API。</em>

还提供了各种demo,一切好像都变的简单起来!

啦啦啦

好的,我们先来一段js代码,气氛搞起来,

<!DOCTYPE html>
<html>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
    $(function() {
        var params = {
            // Request parameters
        };
      
        $.ajax({
            url: "https://api.projectoxford.ai/emotion/v1.0/recognize?" + $.param(params),
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("Content-Type","application/json");
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}");
            },
            type: "POST",
            // Request body
            data: "{body}",
        })
        .done(function(data) {
            alert("success");
        })
        .fail(function() {
            alert("error");
        });
    });
</script>
</body>
</html>

简单,我们来改下相关参数,哈哈哈哈,我去,为什么老提示什么


擦擦擦

好吧,这个原来是js 的ajax跨域不能访问的原因,微软这坑X,那好用jsonp吧,这个可以吧

 $.ajax({ type: "get",
 async: false,
 url: "http://example", 
dataType: "jsonp",
 jsonp: "callback",
//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) 
jsonpCallback:"flightHandler",
//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 
success: function(json)
{ alert('您查询到航班信息:票价: ' + json.price + ' 元,余票: ' + json.tickets + ' 张。'); }, 
error: function(){ alert('fail'); }
 });
 });

就类似这种的,我们知道,哪怕跨域js文件中的代码(当然指符合web脚本安全策略的),web页面也是可以无条件执行的。,,wait,为什么还不行,jsonp是只支持get的,post不行,

看这里
擦擦擦

好吧,我是一个PHP程序员,那么就用宇宙最好的语言吧,哈,刚好人家也提供了demo

<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';

$request = new Http_Request2('https://api.projectoxford.ai/emotion/v1.0/recognize');
$url = $request->getUrl();

$headers = array(
    // Request headers
    'Content-Type' => 'application/json',
    'Ocp-Apim-Subscription-Key' => '{subscription key}',
);

$request->setHeader($headers);

$parameters = array(
    // Request parameters
);

$url->setQueryVariables($parameters);

$request->setMethod(HTTP_Request2::METHOD_POST);

// Request body
$request->setBody("{body}");

try
{
    $response = $request->send();
    echo $response->getBody();
}
catch (HttpException $ex)
{
    echo $ex;
}

?>

稍等,这是啥?Http_Request2,,还有这样写demo的,这个直接我都没有,好不容易下了个,人家还require_once()了好几个。。


擦擦擦

好吧,自己写,,用curl吧,大家要没用过,就看看这篇文章写的蛮好的,
好的,直接贴出代码吧,知道你们最想看什么


$imgurl=trim($_POST['imgurl']) ? trim($_POST['imgurl']) : '';
$patharr=explode('.', $_SERVER['SCRIPT_NAME']);
$path=substr($patharr[0], 0,strrpos($patharr[0],'/'));
$finurl="http://".$_SERVER['SERVER_NAME'].$path.'/'.$imgurl;
if($imgurl=='' or !isset($imgurl)){
    return 'fail';
}
$header = array (  
     "POST HTTP/1.1",  
     "Content-Type: application/json",
     "Ocp-Apim-Subscription-Key:XXXXXXXXX",
 ); 32879366.jpg"; 
$param=array('url'=>$finurl);
$jsonparam=json_encode($param);
$ch = curl_init(); 
$url="https://api.projectoxford.ai/emotion/v1.0/recognize"; 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonparam);//
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);  //设置头信息的地方  
curl_setopt($ch, CURLOPT_HEADER, 0);    //no取得返回头信息
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);   
curl_setopt($ch, CURLOPT_TIMEOUT, 10);  
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//不直接输出response 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);//如果返回的response 头部中存在Location值,就会递归请求  

try {
    $result = curl_exec($ch);
    //unlink($imgurl);
    echo $result;
 } catch (Exception $e) {
    echo "fail!".'<br>';
    var_dump(curl_error($ch)); 
 } 

好的,终于解决了最主要的问题,剩下的就简单了,页面什么的,能用就好了。

谢谢大家

最后附上项目部署的BAE地址,ps:这个地址可能随时失效,主要是欠费了。。。。。。。
http://huanyi.duapp.com/emotion.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容