Как использовать функцию FindS Similar в Azure FaceAPI - PullRequest
0 голосов
/ 08 января 2019

Я читаю вещи подробно. И напишите другой код сейчас. Все хорошо, кроме одной ошибки. Я поместил config.py и util.py в аналогичную папку и установил мои 'key' и 'url' в config.py. Я не понимаю, почему эта ошибка появляется тогда?

Traceback (последний вызов был последним): Файл "a_s Similar1.py", строка 40, в find_simils (face_id, face_list_id, max_candidates_return, mode) Файл "a_salog1.py", строка 37, в find_s Similars return 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 голосов
/ 08 января 2019

В качестве полезной нагрузки вы передаете следующее:

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

Как указано в документации здесь :

faceIds (Array): массив кандидатов в faceIds. Все они созданный Face - Detect и срок действия идентификатора лица истекает через 24 часа после обнаружение вызова. Количество faceIds ограничено 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, поэтому вызываемый URL неверен. Вы должны звонить https://[location].api.cognitive.microsoft.com/face/v1.0/findsimilars, здесь вы звоните только корню https://[location].api.cognitive.microsoft.com/face/v1.0. Исправить URL

...