Aws-cli: 在没有 S3 的情况下将图像字节传递给 Rekognition 不起作用

创建于 2017-10-30  ·  3评论  ·  资料来源: aws/aws-cli

根据文档,可以使用--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

enhancement

最有用的评论

@dstufft有任何关于此的消息吗?

所有3条评论

由于 CLI 公开这些输入的方式,这目前是不可能的。 我将把它归档为对这个 API 的增强,以允许将字节目录传递给命令。 同时,您需要使用 S3 解决方法。

@dstufft有任何关于此的消息吗?

再有这方面的消息吗? 我找不到将图像上传为字节的示例。

此页面是否有帮助?
0 / 5 - 0 等级