如何使用AWS Rekognition在Swift 3中检测图像标签和面孔

时间:2016-12-27 16:41:36

标签: ios amazon-web-services swift3 aws-sdk amazon-rekognition

所以我一直在尝试使用AWSRekognition SDK来检测图像中的面部和标签。但是,亚马逊没有关于如何将SDK与iOS集成的文档。他们有链接,显示如何使用Rekognition(开发人员指南),仅使用Java中的示例,并且非常有限。

Amazon Rekognition Developer Guide

如果您单击他们的“iOS文档”,它会将您带到一般iOS文档页面,在任何部分都没有Rekognition的迹象。

AWS iOS Developer Guide

我想知道是否有人知道如何在 Swift 3 中集成AWS Rekognition。如何初始化它并使用图像发出请求,接收带有标签的响应。

我已经下载了AWSRekognition.frameworkAWSCore.framework并将其添加到我的项目中。我也在我的AppDelegate.swift中导入了这两个并初始化了我的AWS凭证。

let credentialsProvider = AWSCognitoCredentialsProvider(
        regionType: AWSRegionType.usEast1,
        identityPoolId: "us-east-1_myPoolID")
let configuration = AWSServiceConfiguration(
        region: AWSRegionType.usEast1,
        credentialsProvider: credentialsProvider)
AWSServiceManager.default().defaultServiceConfiguration = configuration

此外,我尝试初始化Rekognition并构建一个请求:

do {

    let rekognitionClient:AWSRekognition = AWSRekognition(forKey: "Maybe a Key from AWS?")

    let request: AWSRekognitionDetectLabelsRequest = try AWSRekognitionDetectLabelsRequest(dictionary: ["image": UIImage(named:"TestImage")!, "maxLabels":3, "minConfidence":90], error: (print("error")))
    rekognitionClient.detectLabels(request) { (response:AWSRekognitionDetectLabelsResponse?, error:Error?) in
        if error == nil {
            print(response!)
        }
    }

} catch {
    print("Error")
}

非常感谢!

2 个答案:

答案 0 :(得分:4)

Rekognition iOS SDK的网络文档缺乏,但SDK代码中的注释对我很有帮助。如果您在Xcode中单击关键字时按住 Cmd ,您应该能够在评论中找到所需的所有信息。

从这里您可以看到Key指的是您可以使用registerRekognitionWithConfiguration执行的先前注册的客户端,但是您可以使用默认的Karthik提及的方式跳过所有这些:

let rekognitionClient = AWSRekognition.defaultRekognition()

我一直在处理人脸检测,所以我没有在我自己的代码中使用AWSRekognitionDetectLabelsRequest,但我认为你可能出错的地方是image属性{{1}你应该传递AWSRekognitionDetectLabelsRequest而不是AWSRekognitionImage。你可以调用UIImage从UIImage获取原始字节。

UIImageJPEGRepresentation

如果您也单独设置请求属性,那么调试也应该更容易。

答案 1 :(得分:-1)

if($message == "Bot copy me")
{
    sendMessage($chatid, "Sure?");
}