如何使用Azure FaceAPI的FindSimilar函数

时间:2019-01-08 07:40:29

标签: python-3.x azure microsoft-cognitive face-api

我详细阅读了一些东西。并立即编写另一个代码。除了一个错误,一切都很好。我已经将config.py和util.py放在类似的文件夹中,并在config.py中设置了我的'key'和'url'。我不明白为什么会出现此错误?

回溯(最近通话最近):   在第40行中输入文件“ a_similar1.py”     find_likes(face_id,face_list_id,max_candidates_return,mode)   在find_similars中,文件“ a_similar1.py”,第37行     返回util.request('POST',url,json = jsonb)   请求中的文件“ /home/afshan/Microsoft_Azure/phase_1/Cognitive-Face-Python/cognitive_face/util.py”,第106行     error_msg.get('消息')) util.CognitiveFaceException:调用Cognitive Face API时出错:     状态码:404     代码:ResourceNotFound     消息:找不到请求的资源。

util.py的行是:

# Setup the headers with default Content-Type and Subscription Key.
    headers = headers or {}
    if 'Content-Type' not in headers:
        headers['Content-Type'] = 'application/json'
    #headers['Ocp-Apim-Subscription-Key'] = Key.get()
    headers['Ocp-Apim-Subscription-Key'] = 'd7c5495c64a44bc692761cd7c45ad56e'

    response = requests.request(
        method,
        url,
        params=params,
        data=data,
        json=json,
        headers=headers)

代码是:

import util
import uuid
import unittest

import cognitive_face as CF

face_id = None
face_list_id = None
max_candidates_return = None
mode = None

CF.Key.set('d7c5495c64a44bc692761cd7c45ad56e')
CF.BaseUrl.set('https://southeastasia.api.cognitive.microsoft.com/face/v1.0/')

def find_similars(face_id, face_list_id, max_candidates_return, mode):

    #face_id='5a27b8c3-f340-4559-baa3-a8dc770c5078', 
    face_id='bd930ddb-7f1d-4693-875d-3126a678dd68',
    face_list_id='ef799940-1305-11e9-bec1-080027226cb7', 
    max_candidates_return=100,
    mode='matchPerson'

    url = 'https://southeastasia.api.cognitive.microsoft.com/face/v1.0/'
    jsonb = {
    'faceId': face_id,
    'faceListId': face_list_id,
    'maxNumOfCandidatesReturned': max_candidates_return,
    'mode': mode,
    }

    return util.request('POST', url, json=jsonb) 


find_similars(face_id, face_list_id, max_candidates_return, mode)

1 个答案:

答案 0 :(得分:0)

您正在传递以下内容作为有效负载:

payload = {'faceId': '5a27b8c3-f340-4559-baa3-a8dc770c5078', 'faceIds': 'ef799940-1305-11e9-bec1-080027226cb7', 'maxNumOfCandidatesReturned': 20, 'mode': "matchPerson"}

文档说明here

  

faceIds(数组):候选faceIds的数组。他们都是   由Face创建-检测并且faceIds将在24小时后过期   检测电话。 faceId的数量限制为1000。   参数faceListId,largeFaceListId和faceIds不应为   同时提供

这里您没有在faceIds中传递数组,它应该类似于以下内容:

payload = {'faceId': '5a27b8c3-f340-4559-baa3-a8dc770c5078', 'faceIds': ['ef799940-1305-11e9-bec1-080027226cb7'], 'maxNumOfCandidatesReturned': 20, 'mode': "matchPerson"}

修改问题后

您添加了以下错误:

util.CognitiveFaceException: Error when calling Cognitive Face API: status_code: 404 code: ResourceNotFound message: The requested resource was not found.

您遇到的错误是404,因此调用的网址错误。您应该呼叫https://[location].api.cognitive.microsoft.com/face/v1.0/findsimilars,这里您仅呼叫根https://[location].api.cognitive.microsoft.com/face/v1.0。修正网址