2017-11-07 23 views
1

私は現在、特定の画像の感情を見るためにMicrosoft Azure Emotion APIを使用しています。サンプルコードは動作しますが(Python 2.7)、これを複数のイメージにしたいと思います。microsoft emotion api multiple images PYTHON 2.7

image1、image2、image3という名前の100個の画像があるディレクトリ(URL)があります。

私が探しているのは、ループした画像の平均評価/スコアを与えるためのコードの変更です。

私が持っているコードは次のとおりです(X)とのパスに しかし、私は取得することはできません。

for x in range (0,100): 

やURLを変更します。私は、whileループを考えています

import httplib, urllib, base64 

headers = { 
    'Content-Type': 'application/json', 
    'Ocp-Apim-Subscription-Key': 'MY KEY HERE', 
} 

params = urllib.urlencode({ 
}) 

body = "{ 'url': 'https://assets.mubi.com/images/notebook/post_images/22267/images-w1400.jpg?1474980339' }" 

try: 
    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) 
    conn.close() 
except Exception as e: 
    print("[Errno {0}] {1}".format(e.errno, e.strerror)) 

これはうまくいく。 本当にありがとうございます。

ありがとう、Nathan。

+0

実際に何が欲しいのですか?私が知っているように、感情APIを呼び出した結果は、facerectangleとscoresです。あなたは、facerectangleとスコアを平均100画像の平均をAPIを介して取得したいですか? –

+0

最新のアップデートはありますか? –

答えて

0

私のコメントで言及したように、私はfacerectangleと100点の平均スコアを取得したいと思います。 私の経験では、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) 

印刷出力:

enter image description here

それはあなたのお役に立てば幸いです。

関連する問題