根据文档,可以使用--image
选项中的Bytes
属性将图像字节传递给 Rekognition API 操作:
aws rekognition detect-labels --image "Bytes=blob"
我尝试了无数组合,但无济于事。我也明白,图像应该是 base64 编码的。但是,无论我尝试什么,我都会收到以下错误消息。
An error occurred (InvalidImageFormatException) when calling the DetectLabels
operation: Invalid image encoding
似乎 aws-cli 接受了您给它的输入“blob”,然后再次对其进行 base64 编码。问题是,它实际上并没有将输入视为一个 blob。它将它视为一个字符串并尝试将其解释为 utf8,因此您实际上不能传递一个 blob,除非您碰巧拥有一个恰好由完全有效的 utf8 字符组成的 blob。即使您传递 JSON,它仍然会将 Bytes 值编码为 base64。
因此,唯一的选择是先将图像上传到 S3,然后使用S3Object
属性引用它。然而,这并不总是需要的,缺乏"Bytes=blob"
支持似乎与文档和内置帮助文本形成对比。
使用的系统/软件:
aws-cli/1.11.175 Python/2.7.13 Linux/4.8.0-2-amd64 botocore/1.7.33
由于 CLI 公开这些输入的方式,这目前是不可能的。 我将把它归档为对这个 API 的增强,以允许将字节目录传递给命令。 同时,您需要使用 S3 解决方法。
@dstufft有任何关于此的消息吗?
再有这方面的消息吗? 我找不到将图像上传为字节的示例。
最有用的评论
@dstufft有任何关于此的消息吗?