Android应用程序中的AWS面部识别

时间:2020-02-24 18:07:16

标签: amazon-web-services android-studio face-recognition amazon-rekognition aws-amplify-sdk-android

我正在尝试制作一个 Android应用程序,该应用程序可以将Android平板电脑上的相机拍摄的图像发送到AWS Rekognition。旨在将图片直接发送到 AWS Rekognition 服务,而无需 S3存储桶。图片本身不需要保存在云中。仅面部元数据需要存储在集合中的AWS上。之后,最终目标是使一个人能够再次捕捉其面部,AWS表示与该集合中的先前面部相匹配。

互联网上有很多信息。但是大多数时候,AWS建议使用Amplify框架。而且我真的不知道在这种简单情况下是否有必要这样做。

我已经完成了AWS CLI中的所有步骤(以及这些工作),但没有成功将这些步骤导入Android Studio。下面,我描述了我在AWS CLI中完成的步骤。我会在Android Studio中执行这些步骤,但是我不是编程这种语言的专家。 (我已经在AWS CLI中进行了收集。)

首先,我将可由AWS找到的一张脸编入一张图片。在我的AWS CLI代码中,我以S3为例。我可以将图片直接发送到AWS Rekognition是本意。仅当有人特别按下按钮时,才需要执行此操作。因此,拍照并将其发送到AWS Rekognition以在特定集合中索引人脸

aws rekognition index-faces --image '{"S3Object":{"Bucket":"bucketName","Name":"picture1.jpg"}}' --collection-id "collectionName" --max-faces 1 --quality-filter "AUTO" --detection-attributes "DEFAULT" --external-image-id "picture1.jpg"

然后,当用户按下另一个按钮时,它需要再次拍照,然后需要将其发送到AWS Rekognition,以搜索通过图像发送的集合 。我已经通过以下AWS CLI代码成功完成了此任务。无需S3,也应将图片直接发送到AWS。 AWS返回与集合中已有人脸的匹配项。

aws rekognition search-faces-by-image --image '{"S3Object":{"Bucket":"bucketName","Name":"picture.jpg"}}' --collection-id "collectionName"

再次,我不是Android Studio的专业人员,所以如果有人有一个非常简单的解决方案,那将非常好。如果有人可以告诉我Amplify框架是否确实必要,那也将非常好。 预先感谢!

1 个答案:

答案 0 :(得分:2)

您不必使用Amplify,您可以通过AWS Java SDK使用识别功能。

要实现与CLI相同的功能,您可以先使用IndexFacesRequest为集合中的面孔建立索引,或者放弃此操作并通过CLI手动创建集合(如果这样做)是一次性操作。

要通过 image 搜索集合的面孔,您只需修改以下代码段即可传入64位字节编码的图像,而不是S3 URL。 public TModel(List<TModel> tEntities) { List<TModel> responseEntities= tEntities.stream() .filter(model -> model.getStatus().equals("RDG")) .collect(Collectors.toList()); 方法here的完整文档。

searchFacesByImage()