使用Project Oxford的Emotion API

时间:2015-11-18 00:27:38

标签: python python-2.7 microsoft-cognitive

我遇到了牛津计划项目并对它真正感兴趣并使用了它的API,特别是那种情感。 Microsoft提供示例代码

########### Python 2.7 #############
import httplib, urllib, base64

headers = {
    # Request headers
    'Content-Type': 'application/json',
    'Ocp-Apim-Subscription-Key': 'add key',

}

params = urllib.urlencode({
    # Request parameters
    'faceRectangles': '{string}',

})

try:
    conn = httplib.HTTPSConnection('api.projectoxford.ai')
    conn.request("POST", "/emotion/v1.0/recognize&%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()

except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

这不包含请求正文。我认为我需要添加的是

body = {
    'url': 'url here',
}

并更改

   conn.request("POST", "/emotion/v1.0/recognize&%s" % params, "{body}",headers)

conn.request("POST", "/emotion/v1.0/recognize&%s" % params, body, headers)

然而,这是行不通的。我跑的时候会得到这个

Traceback (most recent call last):
File "C:/Users/User/Desktop/python/emotion.py", line 29, in <module>
print("[Errno {0}] {1}".format(e.errno, e.strerror))
AttributeError: 'exceptions.TypeError' object has no attribute 'errno'

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

您需要将str(body)传递给请求。

此外,如果您没有任何脸部矩形,请务必不要包含params

答案 1 :(得分:0)

以下适用于我(Python 2.7),也基于MSDN提供的示例代码。您不需要指定faceRectangles(除非您想要,因为它们已被检测到,以节省计算时间)。

std::vector<Base>