Gemäß der Dokumentation kann man Bildbytes an eine Rekognition-API-Operation übergeben, indem man die Eigenschaft Bytes
in der Option --image
verwendet:
aws rekognition detect-labels --image "Bytes=blob"
Ich habe unzählige Kombinationen ausprobiert, aber ohne Erfolg. Ich verstehe auch, dass das Bild base64-codiert sein sollte. Was ich aber auch versuche, ich bekomme am Ende folgende Fehlermeldung.
An error occurred (InvalidImageFormatException) when calling the DetectLabels
operation: Invalid image encoding
Es scheint, dass die aws-cli die Eingabe "Blob", die Sie ihr geben, übernimmt und sie erneut mit Base64 codiert. Das Problem ist, dass die Eingabe tatsächlich nicht als Blob behandelt wird. Es behandelt es als Zeichenfolge und versucht, es als utf8 zu interpretieren, sodass Sie einen Blob nicht wirklich übergeben können, es sei denn, Sie sind zufällig im Besitz eines Blobs, der zufällig aus vollständig gültigen utf8-Zeichen besteht. Selbst wenn Sie JSON übergeben, wird der Bytes-Wert immer noch in base64 codiert.
Folglich besteht die einzige Möglichkeit darin, das Bild zuerst in S3 hochzuladen und dann mit der Eigenschaft S3Object
darauf zu verweisen. Allerdings ist dies nicht immer erwünscht und die fehlende "Bytes=blob"
Unterstützung scheint im Gegensatz zur Dokumentation und den eingebauten Hilfetexten zu stehen.
Verwendetes System/Software:
aws-cli/1.11.175 Python/2.7.13 Linux/4.8.0-2-amd64 botocore/1.7.33
Dies ist derzeit aufgrund der Art und Weise, wie die CLI diese Eingaben verfügbar macht, nicht möglich. Ich werde dies als Erweiterung dieser API einreichen, um die Übergabe des Bytes-Verzeichnisses an den Befehl zu ermöglichen. In der Zwischenzeit müssen Sie die S3-Umgehung verwenden.
@dstufft irgendwelche Neuigkeiten dazu?
wieder irgendwelche Neuigkeiten dazu? Ich kann keine Beispiele für das Hochladen von Bildern als Bytes finden.
Hilfreichster Kommentar
@dstufft irgendwelche Neuigkeiten dazu?