2017-02-02 1 views
4

J'essaie de comparer des visages à l'aide AWS Rekognition grâce à Python boto3, comme indiqué dans la documentation AWS.Erreur dans Boto AWS Rekognition

Mon appel API est:

client = boto3.client('rekognition', aws_access_key_id=key, aws_secret_access_key=secret, region_name=region) 

source_bytes = open('source.jpg', 'rb') 
target_bytes = open('target.jpg', 'rb') 

response = client.compare_faces(
    SourceImage = { 
     'Bytes':bytearray(source_bytes.read()) 
    }, 
    TargetImage = { 
     'Bytes':bytearray(target_bytes.read()) 
    }, 
    SimilarityThreshold = SIMILARITY_THRESHOLD 
) 

source_image.close() 
target_image.close() 

Mais chaque fois que je lance ce programme, je reçois l'erreur suivante:

botocore.errorfactory.InvalidParameterException: An error occurred (InvalidParameterException) when calling the CompareFaces operation: Request has Invalid Parameters 

J'ai spécifié le secret, la clé, la région et le seuil correctement. Comment puis-je effacer cette erreur et faire fonctionner l'appel de demande?

+2

est 'SIMILARITY_THRESHOLD' un flotteur entre 0 et 1? –

+2

n'est pas non plus nécessaire de lui envoyer un tableau d'octets si vous le lisez en binaire de toute façon. La façon dont je le fais est source_bytes.read(). Strip() – masterforker

Répondre

0

Votre code est parfaitement bien,

dimensions de l'image importe quand il vient à AWS Rekognition.

Limites Amazon Rekognition

Voici une liste des limites Amazon Rekognition:

  1. taille d'image maximale enregistrée comme un objet Amazon S3 est limitée à 15 Mo.
  2. La résolution minimale en pixels pour la hauteur et la largeur est de 80 pixels. La taille maximale des images en tant qu'ordinateurs passés en tant que paramètres d'une API est de 5 Mo.
  3. Amazon Rekognition prend en charge les formats d'image PNG et JPEG. Autrement dit, les images que vous fournissez en tant qu'entrées pour diverses opérations d'API, telles que DetectLabels et IndexFaces, doivent être dans l'un des formats pris en charge.
  4. Le nombre maximum de faces que vous pouvez stocker dans une collection à un seul visage est de 1 million. La correspondance maximale face aux rendements API de recherche est 4096.

source: AWS Docs

1

La façon dont vous ouvrez le fichier, vous n'avez pas besoin de jeter à bytearray.

Essayez ceci:

client = boto3.client('rekognition', aws_access_key_id=key, aws_secret_access_key=secret, region_name=region) 

source_bytes = open('source.jpg', 'rb') 
target_bytes = open('target.jpg', 'rb') 

response = client.compare_faces(
    SourceImage = { 
     'Bytes':source_bytes.read() 
    }, 
    TargetImage = { 
     'Bytes':target_bytes.read() 
    }, 
    SimilarityThreshold = SIMILARITY_THRESHOLD 
) 

source_image.close() 
target_image.close()