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

今天探索了一下人脸识别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=newHttp_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

微软官网文档人脸识别API分析相关推荐

  1. vue-awesome-swiper官网文档

    vue-awesome-swiper官网文档 https://www.swiper.com.cn/api/index.html

  2. AFNetworking官网文档及翻译

    AFNetworking2.4.1解析 1.官网文档外加点中文注释 AFNetworking官网(点击进入) AFNetworking翻译注释 Architecture(结构) NSURLConnec ...

  3. 根据官网文档看Spark Streaming对接Kafka的两种方式, 以及如何实现Exactly Once语义

    注: 本文算是本人的学习记录, 中间可能有些知识点并不成熟, 不能保证正确性. 只能算是对官网文档作了个翻译和解读, 随时有可能回来更新和纠错 上一篇文章讨论了Spark Streaming的WAL( ...

  4. JMeter官网文档

    JMeter官网文档API 步骤: 解压下载的安装包 进入\apache-jmeter-5.4.1\docs\api目录 打开index.html网页 显示内容如下:

  5. OpenHarmony 官网文档有哪些上新?上篇:应用开发文档上新

    随着 OpenAtom OpenHarmony(以下简称"OpenHarmony")系统能力持续升级,已具备支撑复杂带屏标准设备和应用开发的基础能力.相较于旧版本,OpenHarm ...

  6. redis过期机制(官网文档总结)

    官网地址:https://redis.io/commands/expire redis过期定义如下: Set a timeout on key. After the timeout has expir ...

  7. mybatis官网文档mybatis_doc

    在平时的学习中,我们可以去参考官网的文档来学习,这个文档有中文的,方便我们去阅读,而且这里的分类很详细. 官网文档链接:http://www.mybatis.org/mybatis-3/zh/inde ...

  8. SAP ME架构官网文档学习总结

    认证平台 SAP ME PAM(Platform Availability Matrix ) 安装的应用以及相应的数据库均可在官网上进行查看https://support.sap.com/pam 最低 ...

  9. Go语言从入门到规范-1.1、Go语言官网文档大纲及环境搭建

    Go语言从入门到规范-1.1.Go语言官网文档大纲及环境搭建 文章目录 Go语言从入门到规范-1.1.Go语言官网文档大纲及环境搭建 前言 一.go简介及学习路径 二.安装go 1.下载Go发行版 2 ...

最新文章

  1. react生命周期函数
  2. 关于Transformer,那些的你不知道的事
  3. 深度好文丨区块链将彻底改变人工智能
  4. go语言笔记——数组长度不可变,但是元素值是可变的!!!
  5. 常见25种深度学习模型的github代码
  6. python获取视频缩略图_用 Python 代码生成视频的缩略图
  7. ffmpeg将sdp转发_ffmpeg常用命令
  8. 通用sqlserver分页存储过程
  9. 职场pua是什么意思,如何反职场pua,职场pua如何走出来
  10. 留言板php数据库_PHP 留言板教程数据库表设计
  11. web之线性渐变,径向渐变,重复渐变
  12. ipadpro尺寸的html,新一代全面屏iPad Pro发布,技术规格和尺寸来了!
  13. u盘不能格式化怎么办
  14. 设置pip源为清华源或百度源
  15. Web.14.三层架构之购物车项目01
  16. 为什么别人的移动开发效率是你的2倍?丨课程推广
  17. python数据可视化案例2017年6省gdp_吴裕雄 数据挖掘与分析案例实战(5)——python数据可视化...
  18. 纯CSS3绘制的猫咪老师——献给喜欢CSS3及《夏目友人帐》的你
  19. 呜啦啦啦~我胡汉三又回来了
  20. 台达触摸屏modbusRTU与51单片机通讯台达屏与郭天祥51单片机通讯程序

热门文章

  1. 桁架工业机器人编程_桁架机器人规划设计,工业软件开发
  2. kuka机器人profinet网络配置步骤_谈一谈KUKA工业机器人与S7-1200PLC实现Profinet通讯的步骤...
  3. 计算机图形学:传统函数方法判定点在不规则封闭区域内的判定方法
  4. 使用 Python 进行深度学习以进行裂纹检测
  5. 浏览器版本重新判断(IE11革新后)
  6. 第十二章 逐步回归和通径分析
  7. 基于Android的餐馆订餐点餐app
  8. 单变量线性回归实验分析
  9. php运行出现404错误,php文件提示404错误not found其实文件存在
  10. 信息系统项目管理师教程(第3版)- 马斯洛需求层次理论