使用 Project Oxford 的情感 API
Using Project Oxford's Emotion API
我偶然发现了 Project Oxford 并对它产生了真正的兴趣并使用了它 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'
非常感谢任何帮助!
您需要将 str(body)
传递给请求。
此外,如果您没有任何面部矩形,请确保不要包含 params
。
以下适用于我 (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))
我偶然发现了 Project Oxford 并对它产生了真正的兴趣并使用了它 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'
非常感谢任何帮助!
您需要将 str(body)
传递给请求。
此外,如果您没有任何面部矩形,请确保不要包含 params
。
以下适用于我 (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))