正如我在评论中提到的,我假设您想要获取 100 张图像的 facerectangle 和得分平均值。根据我的经验,我们无法直接通过 Emotion API 获得您想要的结果。
我建议您使用循环调用 API 来汇总结果,然后计算平均结果。
你可以参考下面我已经测试成功的代码。
import httplib, urllib, base64, json
headers = {
# Request headers. Replace the placeholder key below with your subscription key.
'Content-Type': 'application/json',
'Ocp-Apim-Subscription-Key': 'YOUR KEY',
}
params = urllib.urlencode({
})
widthTotal = 0
topTotal = 0
leftTotal = 0
heightTotal = 0
sadnessTotal = 0
neutralTotal = 0
contemptTotal = 0
disgustTotal = 0
angerTotal = 0
surpriseTotal = 0
fearTotal = 0
happinessTotal = 0
count = 100
try:
for x in range(0, count):
# Replace the example URL below with the URL of the image you want to analyze.
body = "{ 'url': 'https://assets.mubi.com/images/notebook/post_images/22267/images-w1400.jpg?1474980339' }"
# NOTE: You must use the same region in your REST call as you used to obtain your subscription keys.
# For example, if you obtained your subscription keys from westcentralus, replace "westus" in the
# URL below with "westcentralus".
conn = httplib.HTTPSConnection('westus.api.cognitive.microsoft.com')
conn.request("POST", "/emotion/v1.0/recognize?%s" % params, body, headers)
response = conn.getresponse()
data = response.read()
# print(data)
Arr = json.loads(data, encoding='utf-8')
# print Arr[0].values()[0]
# print Arr[0].values()[1]
# print Arr[0].values()[0]["width"]
widthTotal += Arr[0].values()[0]["width"]
topTotal += Arr[0].values()[0]["top"]
leftTotal += Arr[0].values()[0]["height"]
heightTotal += Arr[0].values()[0]["height"]
sadnessTotal += Arr[0].values()[1]["sadness"]
neutralTotal += Arr[0].values()[1]["neutral"]
contemptTotal += Arr[0].values()[1]["contempt"]
disgustTotal += Arr[0].values()[1]["disgust"]
angerTotal += Arr[0].values()[1]["anger"]
surpriseTotal += Arr[0].values()[1]["surprise"]
fearTotal += Arr[0].values()[1]["fear"]
happinessTotal += Arr[0].values()[1]["happiness"]
conn.close()
except Exception as e:
print("[Errno {0}] {1}".format(e.errno, e.strerror))
print "width avg: " + str(widthTotal / count)
print "top avg: " + str(topTotal / count)
print "left avg: " + str(leftTotal / count)
print "heigh avg: " + str(heightTotal / count)
print "sadness avg: " + str(sadnessTotal / count)
print "neutral avg: " + str(neutralTotal / count)
print "contempt avg: " + str(contemptTotal / count)
print "disgust avg: " + str(disgustTotal / count)
print "anger avg: " + str(angerTotal / count)
print "surprise avg: " + str(surpriseTotal / count)
print "fear avg: " + str(fearTotal / count)
print "happiness avg: " + str(happinessTotal / count)
打印输出:
希望它可以帮助你。