Ограничительная коробка в AWS Rekognition - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь получить ограничивающую рамку из изображения в Rekognition, я получаю метку, но я получаю:

Keyerror 'экземпляры' в ответе ['instances']

def detect_labels(bucket, key, max_labels=10, min_confidence=90, region="eu-west-1"):
    rekognition = session.client("rekognition", region)
    response = rekognition.detect_labels(
        Image={
            "S3Object": {
                "Bucket": bucket,
                "Name": key,
            }
        }, MaxLabels=10
    )
    return response

if __name__ == "__main__":

response= detect_labels(BUCKET, KEY)

    print('Detected labels for ' + photo) 
    print()   
    for label in response['Labels']:

        for instance in label['Instances']:
            print ("  Bounding box")
            print ("    Top: " + str(instance['BoundingBox']['Top']))

        print ("----------")
        print ()

1 Ответ

0 голосов
/ 24 января 2019

Пожалуйста, убедитесь, что вы используете обновленный boto3 SDK.Я обнаружил, что boto3 v1.9.20 не возвращает массив экземпляров, в то время как текущий v1.9.84 его возвращает.

Кроме этого, в документации говорится:

Если Метка представляет объект, Экземпляры содержат ограничивающие рамки для каждого экземпляра ...

Это означает, что экземпляры будут присутствовать, только если метка представляет объект.Ваш код должен проверить, что у данной метки действительно есть экземпляры, например:

if 'Instances' in label:
    for instance in label['Instances']:
        # print details of instance

Также было бы легко это подтвердить, просто напечатав label dict в виде строки JSON и посмотрев, что он на самом деле содержит.

...