Ein Beispiel für das aufrufen von AWS-Rekognition HTTP-API von Python
Möchte ich versuchen,Rekognition ist CompareFaces, aber ich sehe nicht ein vollständiges Beispiel für die syntax für die Verwendung der HTTP-API. Angenommen, ich habe zwei Bilder, wie würde ich das aufrufen dieser API von Python abrufen, die ein ähnlichkeitsergebnis?
- Irgendeinen Grund, warum Sie wollen, verwenden Sie die HTTP-API anstelle von
boto3
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Informationen über den code
Gibt es wenig Dokumentation über die HTTP-API für AWS-Rekognition, aber es ist ziemlich einfach zu bedienen das Modell, dass die meisten code verwendet, um zu schlagen AWS-service HTTP-Endpunkte.
Wichtige Informationen über den code, der folgt:
Müssen Sie
requests
installiert. Wenn Sie es nicht haben, können Sie das folgende in der shell (tut es invirtualenv
wird empfohlen).Den
us-east-1
region verwendet wird. Rekognition derzeit unterstütztus-east-1
,eu-west-1
, undus-west-2
so können Sie den code ändern, um die Unterstützung andere region Endpunkte, wie Sie es wünschen.Es erwartet zwei Dateien existieren auf der Festplatte für das Lesen, genannt
source.jpg
undtarget.jpg
.Als Sie im letzten Film, den ich sah, ich bin mit Bildern von Felicity Jones aus Star Wars: Rogue Ein als meine Quelle und Ziel.
Den
source.jpg
ist:Den
target.jpg
ist:Es mit code zu tun, die Unterzeichnung mit AWS Signature Version 4. Gibt es Bibliotheken gibt, wird die Signatur-Generierung für Sie, aber ich wollte nicht zu viel Vertrauen auf third-party-libs, um zu zeigen, ein vollständiges Beispiel.
Den AWS-Anmeldeinformationen, die Sie verwenden müssen eine gültige Politik für die Rekognition.
Es wurde geschrieben für Python 2.7 (das sollte nicht allzu schwer zu bewegen, zu Python 3).
Den Code
- Code-Ausgang
Wenn Sie den code ausführen, sollte die Ausgabe etwa wie folgt:
Wirklich, nur verwenden boto3
Die einfachste Sache, die Sie tun können, ist die Verwendung
boto3
.Würde der code vereinfacht werden, um so etwas wie die folgenden, alle die signaturerstellung und JSON Arbeit überflüssig geworden ist.
Sicher sein, dass Sie konfiguriert haben
boto3
mit Anmeldeinformationen in der Umgebung oder über die Konfigurations-Datei, oder legen Sie Ihre Anmeldeinformationen inline mit dem code. Weitere Informationen finden Sie unterboto3
- Konfiguration.Den code für dieses verwendet die
boto3
Rekognition API.Den oben
boto3
Beispiel sollte der Ausgang dieses:boto3
wie es sieht sicherlich einfacher. Sollte nicht der erste Aufruf etwas wie:client = boto3.client('rekognition', aws_access_key_id=key, aws_secret_access_key=secret, region_name=region )
?boto3
:An error occurred (AccessDeniedException) when calling the CompareFaces operation: User: X is not authorized to perform: rekognition:CompareFaces.
Vielleicht brauche ich, um zu überprüfen, meine Schlüssel, aber ich wollte überprüfen, dass der client korrekt eingerichtet ist.rekognition
Ressourcen.boto3
Beispiel erhalte ich:botocore.exceptions.ClientError: An error occurred (InvalidImageFormatException) when calling the CompareFaces operation: Invalid image encoding
. Ich habe außerdem versucht, andere Bilder und Formate und finden Sie die gleichen Fehler.FaceMatches
Liste in der obigen Ausgabe:u'FaceMatches': [{u'Face': {u'BoundingBox': {}, u'Confidence': 99.9865951538086}, u'Similarity': 0.0}]
. Mit einem score von 0, Rekognition nicht in der Lage war, um mit dieser herausfordernden paar Bilder.