3

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

Amazon Rekognition 开发人员指南

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

AWS iOS 开发人员指南

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

我已经下载了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")
}

非常感谢!

4

2 回答 2

5

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

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

let rekognitionClient = AWSRekognition.defaultRekognition()

我一直在使用人脸检测,所以我没有AWSRekognitionDetectLabelsRequest在我自己的代码中使用过,但我认为你可能出错的地方是应该是一个而不是你传入的image属性。你可以打电话来获取来自 UIImage 的原始字节。AWSRekognitionDetectLabelsRequestAWSRekognitionImageUIImageUIImageJPEGRepresentation

let sourceImage = UIImage(named: "TestImage")

let image = AWSRekognitionImage()
image!.bytes = UIImageJPEGRepresentation(sourceImage!, 0.7)

guard let request = AWSRekognitionDetectLabelsRequest() else {
    puts("Unable to initialize AWSRekognitionDetectLabelsRequest.")
    return
}

request.image = image
request.maxLabels = 3
request.minConfidence = 90

如果您也像这样单独设置请求属性,调试也应该容易得多。

于 2016-12-29T14:25:45.217 回答
-1
let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.EUWest1,
                                                            identityPoolId:"please enter pool id")
    let configuration = AWSServiceConfiguration(region:.EUWest1, credentialsProvider:credentialsProvider)
    AWSServiceManager.default().defaultServiceConfiguration = configuration
    let rekognitionClient = AWSRekognition.default()
    let image = AWSRekognitionImage()
    image!.bytes = UIImageJPEGRepresentation(sourceImages, 0.7)
    guard let request = AWSRekognitionDetectLabelsRequest()
        else {
            puts("Unable to initialize AWSRekognitionDetectLabelsRequest.")
            return
    }
    request.image = image
    request.maxLabels = 5
    request.minConfidence = 90

    rekognitionClient.detectLabels(request) { (response:AWSRekognitionDetectLabelsResponse?, error:Error?) in
        if error == nil {
            print("response ",response)



        }
    }

}
于 2018-01-08T09:57:28.593 回答