2

我遇到了 Project Oxford,并对它产生了浓厚的兴趣,并使用了它的 API,特别是情感 API。微软提供示例代码

########### 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'

任何帮助深表感谢!

4

2 回答 2

3

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

params此外,如果您没有任何面部矩形,请确保不包括在内。

于 2015-11-19T08:45:31.967 回答
0

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

import httplib, urllib, base64  

# Image to analyse (body of the request)

body = '{\'URL\': \'https://<path to image>.jpg\'}'

# API request for Emotion Detection

headers = {
   'Content-type': 'application/json',
}

params = urllib.urlencode({
   'subscription-key': '',  # Enter EMOTION API key
   #'faceRectangles': '',
})

try:
   conn = httplib.HTTPSConnection('api.projectoxford.ai')
   conn.request("POST", "/emotion/v1.0/recognize?%s" % params, body , headers)
   response = conn.getresponse()
   print("Send request")

   data = response.read()
   print(data)
   conn.close()
except Exception as e:
   print("[Errno {0}] {1}".format(e.errno, e.strerror))
于 2016-01-09T23:28:17.427 回答