2017-04-26 5 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." }' 

내가 사용하는 경우 :

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

을하지만,이 경우에는 내가 을 (남녀 검출) 방법 returnFaceAttribute을하는 방법을 알 수없는 또한 내가 사용하는 경우 :

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) 

모두가 잘 작동 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. 
01,235 result = CF.face.detect(img_url)에서 img 대신 img_url 는 오류가 발생합니다

이것은 모든 종류의 img 크기에서 발생합니다.

아무도이 문제를 해결하는 방법을 설명 할 수 있습니까?

답변

0

Face API에 연결할 때 API 키를 사용해야하는 것처럼 보입니다. 그래서 두 번째 예제가 작동하고 다른 예제는 그렇지 않습니다.

코드 401은 권한이 없다는 것을 의미합니다. 즉,이 시점에서 키로 로그인하지 않은 것입니다.

아마도 urllib 대신에 requests을 사용하는 것이 더 쉽습니다.

0

첫 번째 오류는 파일 내용 대신 파일 개체를 보내면 발생합니다. image 대신 image.read()을 보내야합니다.

두 번째 오류는 요청 헤더에 구독 키가 없어서 발생합니다.

마지막 오류로 인해 이미지 파일 개체를 한 번 읽었을 수 있으므로 다시 읽으면 빈 결과가 반환됩니다. 대신 파일 경로를 보내려고하면 Face API Python SDK의 도우미와 함께 작동해야합니다.