2017-04-26 9 views
0

Face API Python 2.7を使用しようとしています。私は写真で性別を認識したいと思っていましたが、いつもエラーが出てきました。私が手Face API Python

img_url='https://raw.githubusercontent.com/Microsoft/Cognitive-Face-Windows/master/Data/detection1.jpg'

conn = httplib.HTTPSConnection("api.projectoxford.ai") 
conn.request("POST", "/vision/v1.0/tag?%s" % params, img_url, headers) 
res = conn.getresponse() 
data = res.read() 
conn.close() 

私はリンクの代わりに写真を使用している場合

Traceback (most recent call last): 

    File "<ipython-input-314-df31294bc16f>", line 3, in <module> 
    res = conn.getresponse() 

    File "d:\Anaconda2\lib\httplib.py", line 1136, in getresponse 
    response.begin() 

    File "d:\Anaconda2\lib\httplib.py", line 453, in begin 
    version, status, reason = self._read_status() 

    File "d:\Anaconda2\lib\httplib.py", line 409, in _read_status 
    line = self.fp.readline(_MAXLINE + 1) 

    File "d:\Anaconda2\lib\socket.py", line 480, in readline 
    data = self._sock.recv(self._rbufsize) 

    File "d:\Anaconda2\lib\ssl.py", line 756, in recv 
    return self.read(buflen) 

    File "d:\Anaconda2\lib\ssl.py", line 643, in read 
    v = self._sslobj.read(len) 

error: [Errno 10054] 

:私はこのエラーを持っている

from six.moves import urllib 
import httplib 
import json 
params = urllib.urlencode({ 

    'returnFaceId': 'true', 
    'returnFaceAttributes': 'true', 
    'returnFaceAttributes': '{string}', 
}) 
headers = { 
    'ocp-apim-subscription-key': "ee6b8785e7504dfe91efb96d37fc7f51", 
    'content-type': "application/octet-stream" 
    } 
img = open("d:/Taylor.jpg", "rb") 

conn = httplib.HTTPSConnection("api.projectoxford.ai") 

conn.request("POST", "/vision/v1.0/tag?%s" % params, img, headers) 

res = conn.getresponse() 
data = res.read() 
conn.close() 

:これは私のコードです

data 
Out[330]: '{ "statusCode": 401, "message": "Access denied due to invalid subscription key. Make sure to provide a valid key for an active subscription." }' 

私が使用している場合:

KEY = 'ee6b8785e7504dfe91efb96d37fc7f51' 
CF.Key.set(KEY) 

img_url = 'https://raw.githubusercontent.com/Microsoft/Cognitive-Face-Windows/master/Data/detection1.jpg' 
result = CF.face.detect(img_url) 

すべて正常に動作します:

result 
[{u'faceId': u'52c0d1ac-f041-49cd-a587-e81ef67be2fb', 
    u'faceRectangle': {u'height': 213, 
    u'left': 154, 
    u'top': 207, 
    u'width': 213}}] 

しかし、私が使用している場合、この場合には私も (性別の検出のための)方法returnFaceAttributeを使用する方法を知っているとしていませんimg in result = CF.face.detect(img_url)img_url エラーが発生しました:status_code:400

response: {"error":{"code":"InvalidImageSize","message":"Image size is too small or too big."}} 
Traceback (most recent call last): 

    File "<ipython-input-332-3fe2623ccadc>", line 1, in <module> 
    result = CF.face.detect(img) 

    File "d:\Anaconda2\lib\site-packages\cognitive_face\face.py", line 41, in detect 
    data=data) 

    File "d:\Anaconda2\lib\site-packages\cognitive_face\util.py", line 84, in request 
    error_msg.get('message')) 

CognitiveFaceException: Image size is too small or too big. 

これはあらゆる種類のimgサイズで起こります。

誰でもこれらの問題を解決する方法を説明できますか?

答えて

0

Face APIに接続する際にAPIキーを使用する必要があるようです。そういうわけで、あなたの2番目の例は動作し、他の例は動作しません。

コード401は、あなたが権限のない、つまりその時点であなたのキーでログインしていないことを意味します。

urllibの代わりにrequestsを試してみてください。

0

最初とエラーは、ファイルの内容の代わりにファイルオブジェクトを送信することによって発生します。 imageの代わりにimage.read()を送信してください。

2番目のエラーは、要求ヘッダーにサブスクリプションキーがないことが原因です。

最後にエラーが発生した場合は、画像ファイルオブジェクトを一度読み取った可能性があります。そのため、再度読み取ると空の結果が返されます。代わりにファイルパスを送信しようとすると、Face API Python SDKのヘルパーと連携する必要があります。

関連する問題