2017-04-09 7 views
0

저는 Azure인지 서비스에 처음 왔습니다. 저는 Python 3.5와 Azure Face 서비스, 특히 "Face - Find Similar"API를 사용하고 있습니다. JSON 본문을 포맷하는 중에 오류가 발생합니다. 설명서에 따르면 얼굴 목록에 하나의 faceId 또는 얼굴 목록 (예 : 'extended_family')을 제공해야한다고 나와 있습니다. 제 경우에는 얼굴 목록을 사용하고 싶습니다. 전화가 얼굴 목록을 처리하도록 JSON에서 faceID 매개 변수의 형식을 지정하는 방법을 모르겠습니다. faceId를 '{}'또는 'Null', '', 'False'로 설정하는 여러 가지 방법을 시도했지만 오류가 발생했습니다. 다음은 Azure인지 서비스 : Face Find Similar 'BadArgument', '인수 faceListId 및 faceIds를 동시에 제공 할 수 없습니다.'

내 POST 내 JSON의 몸 :

{'faceId': '97522b8b-02b6-4115-99e0-6dc1f5d45f51', 'faceIds': ['97522b8b- 02b6-4115-99e0-6dc1f5d45f51', '0ca8f3e4-edf1-4c14-b926-3b47eae7e29c', '2fadbb12-b10b-4761-aaaa-c50f1dc765c3', '56f464d5-b388-4fc7-9051-6991cf5f1d0d', '29931480-632e-40b6-aa0c-9e03e36e95f9', '7a8085b2-2013-4742-a51a-a5543a0347e8'], 'faceListId': 'extended_family', 'maxNumOfCandidatesReturned': 20, 'mode': 'matchPerson'} 

faceId이 채워집니다 때문에, 내가 얻을 :

{'faceId': '', 'faceIds': ['824e3d83-a94f-4ef2-949e-55a55b2ef256', '51f3c1a5-4e16-4b14-89fa-f1342a2c46ec', '0480d2e0-ff05-44de-b3d8-94408277b1c5', 'c7d767fb-0fbe-46c8-b7af-2c8f675bfd8d', 'ca7e82a7-cd3f-417b-bffa-77c9d47c1439', 'f7130e90-9e1f-428a-a773-93c87932a420'], 'faceListId': 'extended_family', 'maxNumOfCandidatesReturned': 20, 'mode': 'matchPerson'} 
:

error: 'code': 'BadArgument', 'message': 'Argument faceListId and faceIds cannot be provided at the same time.' 

것은 내가 같은 faceId 비워 둘 경우

다음과 같이 표시됩니다.

{'error': {'code': 'BadArgument', 'message': 'Request body is invalid.'}} 

나는 JSON에서 faceId 용어를 제거하면 다음과 같이

{'faceIds': ['690feffd-5c86-47d7-ac3c-224b0eafa90f', '936564e0-31aa-43e3-916e-c7b236bea8e0', '614c04cb-4375-44c8-b393-89d64b4c1ebd', 'a29f8e5c-50ba-4bb8-8bf8-98e356a9125a', '073d7865-2aaf-4806-9bef-ddca478137ea', '7e416e83-5973-4aa1-b1fc-3a25b5174bb3'], 'faceListId': 'andersen_extended_family', 'maxNumOfCandidatesReturned': 20, 'mode': 'matchPerson'} 
{'error': {'code': 'BadArgument', 'message': 'Face ID is invalid.'}} 

내 코드는 다음과 같습니다

facelist = list() #This is populated upstream using the Face Detect API 
facelistid = 'extended_family' 
faceid = '' 

payload = {'faceId': faceid, 'faceIds':facelist,'faceListId':facelistid, 'maxNumOfCandidatesReturned':20,'mode': "matchPerson"} 
req = requests.post(serviceurlpersongroup, data = json.dumps(payload) , headers = {'Ocp-Apim-Subscription-Key': key}) 
jinfo = req.json() 

답변

0

오류 메시지가 설명하는 것처럼, faceListIdfaceIds(안 faceId) 동시에 제공해서는 안됩니다. 그래서 사용하는 payload

payload = {'faceId': faceid, 'faceListId': facelistid, 'maxNumOfCandidatesReturned': 20, 'mode': "matchPerson"} 

또는

payload = {'faceId': faceid, 'faceIds': facelist, 'maxNumOfCandidatesReturned': 20, 'mode': "matchPerson"} 

당신이 더 이상 질문이있는 경우에는 업데이트 자유롭게해야한다.