微软官网文档人脸识别API分析

前段时间在一次微软的黑科技分享会上,体验到微软的人工智能发展得还不错,感觉都挺高大上的。

今天探索了一下人脸识别API的使用,这里分享一下。

首先通过微软的门户开通了认知服务账户,生成了密钥。在上面有API SDK的链接,打开后是github的1个项目,里面包含有android、ios、windows、Python的版本,下载windows后发现里面是一个WPF版的demo,试了一下可以运行。但是我其实想要用PHP调用,怎么办?难道要用这个demo修改1个C#版本的Web接口提供php访问?

想到之前有了解到微软人脸识别API其实应该是REST API方式提供,于是乎又到微软的网站上找找文档看看,最后找到https://dev.projectoxford.ai/docs/services/563879b61984550e40cbbe8d/operations/563879b61984550f30395236,这里就是具体的API详细说明,并且上面有PHP的demo , OK! 这个就容易了。

在使用PHP调用时也不是那么的顺利,几经波折。下面分享一下遇到的几个问题及解决方法。

1、demo是依赖Http_Request2做的,首先得有Http_Request2支持

找到HTTP_Request2-2.3.0(http://pear.php.net/package/HTTP_Request2/download) 下载并解压到目录下,并没有成功运行,发现还需要PEAR和Net_URL2,于是乎又找到并下载了PEAR-.10.3(http://pear.php.net/package/PEAR/download)和Net_URL2-.1.2(http://pear.php.net/package/Net_URL2/download)。

2、再运行时又有 Need OpenSSL support for https…的报错,看起来是不支持https,于是检查php_openssl扩展,确实是没有打开。这个问题是根据自己的php配置产生的,有可能还会出现其他依赖函数缺少,根据报错做相应配置就好,比如可能会提示缺少popen,readlink之类的。

3、又来1个报错

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Fatal error: Uncaught
<table style="border: 1px" cellspacing="0">
<tr>
<td colspan="3" style="background: #ff9999"> <b>HTTP_Request2_ConnectionException</b>: Unable to connect to tls://api.cognitive.azure.cn:443. Error: stream_socket_client(): unable to connect to tls://api.cognitive.azure.cn:443 (Unknown error) stream_socket_client(): Failed to enable crypto stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed in <b>F:\face\HTTP\Request2\Adapter\Socket.php</b> on line <b>332</b></td>
</tr>
<tr>
<td colspan="3" style="background-color: #aaaaaa; text-align: center; font-weight: bold;">Exception trace</td>
</tr>
<tr>
<td style="text-align: center; background: #cccccc; width:20px; font-weight: bold;">#</td>
<td style="text-align: center; background: #cccccc; font-weight: bold;">Function</td>
<td style="text-align: center; background: #cccccc; font-weight: bold;">Location</td>
</tr>
<tr>
<td style="text-ali in F:\face\HTTP\Request2\SocketWrapper.php on line 134

这个错就没什么头绪了,只有找度娘,发现有人说这个应该是证书验证的问题,可以设置Http_Request2的ssl_verify_peer参数来关闭。
设置为false后错误确实消失了。具体的就没有去深究了。
4、到这里接口就已经可以正常返回结果,但结果里提示1个错误信息是

Access denied due to invalid subscription key. Make sure you are subscribed to an API you are trying to call and provide the right key.

subscription key复制过来的怎么会有问题呢,反复核对检查了两遍,确实没有问题,难道是服务开通有问题?

在查看订阅账户信息时偶然看到  终结点https://api.cognitive.azure.cn/face/v1.0 ,这跟demo里的 https://westus.api.cognitive.microsoft.com/face/v1.0是不一样的,这才想到在官网介绍有中国版和全球版,我使用的中国版的订阅,接口demo里地址应该是全球版的,所以会报subscription key无效。

终于看到第一个返回结果了

1
2
3
4
5
6
7
8
9
10
11
[
     {
         "faceId": "62e54f75-91b2-4e96-982a-018d5dcacc5c",
         "faceRectangle": {
             "top": 166,
             "left": 360,
             "width": 109,
             "height": 109
         }
     }
]

以下是发现人脸的api demo代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
require_once 'HTTP/Request2.php' ;
$request = new Http_Request2( 'https://api.cognitive.azure.cn/face/v1.0/detect' );
$url = $request ->getUrl();
 
$headers = array (
     // Request headers
     'Content-Type' => 'application/json' ,
     'Ocp-Apim-Subscription-Key' => 'c635b7e3ad354ea08f957eb1b65d0d77' ,
);
$request ->setConfig([ 'ssl_verify_peer' =>FALSE, 'ssl_verify_host' =>FALSE]);
 
$request ->setHeader( $headers );
 
$parameters = array (
     // Request parameters
     'returnFaceId' => 'true' ,
     'returnFaceLandmarks' => 'false' ,
);
 
$url ->setQueryVariables( $parameters );
 
$request ->setMethod(HTTP_Request2::METHOD_POST);
 
// Request body
$request ->setBody( '{"url":"要发现人脸的图片地址,也可以是[binary data]"}' );
 
try
{
$response = $request ->send();
 
echo $response ->getBody();
}
catch (HttpException $ex )
{
echo $ex ;
}
《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》《》
示例图片地址:http://p1.so.qhimgs1.com/bdr/_240_/t01182deb4809f95b31.jpg,(百度点击图片右键,‘复制图片地址’)

》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c422461f1c71e4cf7f79435589822f3b1cfc091ab1a168252a5577f1c893d60bc0bc932e298d2233760b8735578845e7961b7ad621e659fdea44a7ecff25e2d9c5a0df4322c044720c97f1fb4d711edd1e800340e0b1e949025e60ad9c43728f5d60599c3434b450f991693243d2a8860a0b8374&p=c43dc54ad6c044ee43a8cb2d0214c6&newp=8b2a972999934eaf5be8c66617438e231610db2151d4d4116b82c825d7331b001c3bbfb423251205d0c47c660ba44f5ae1fb367433012ba3dda5c91d9fb4c57479e468&user=baidu&fm=sc&query=%CE%A2%C8%ED%C8%CB%C1%B3%CA%B6%B1%F0+InvalidURL&qid=e2ca8ad60000099f&p1=1
》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》
http://doc.okbase.net/borisjineman/archive/247508.html
https://www.cnblogs.com/yxhblogs/p/5869671.html
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值