如何使用 AWS Rekognition 检测 Swift 中的图像标签和人脸 3
How to use AWS Rekognition to detect Image Labels and Faces in Swift 3
所以我一直在尝试使用 AWSRekognition SDK 来检测图像中的人脸和标签。但是,Amazon 没有关于如何将其 SDK 与 iOS 集成的文档。他们的链接显示了如何使用 Rekognition(开发人员指南),其中的示例仅在 Java 中且非常有限。
Amazon Rekognition Developer Guide
如果您单击他们的 "iOS Documentation",它会将您带到一般 iOS 文档页面,任何部分都没有 Rekognition 的迹象。
我想知道是否有人知道如何在 Swift 3 中集成 AWS Rekognition。如何初始化它并使用图像发出请求,接收带有标签的响应。
我已经下载了 AWSRekognition.framework
和 AWSCore.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")
}
非常感谢!
Web 上缺少 Rekognition iOS SDK 的文档,但 SDK 代码中的注释对我很有帮助。如果您按住 Cmd 并单击 Xcode 中的关键字,您应该能够在评论中找到您需要的所有信息。
从这里你可以看到密钥指的是以前注册的客户端,你可以使用 registerRekognitionWithConfiguration
,但你可以使用默认值跳过所有这些,如 Karthik 提到的:
let rekognitionClient = AWSRekognition.defaultRekognition()
我一直在进行面部检测,所以我没有在自己的代码中使用 AWSRekognitionDetectLabelsRequest
,但我认为你可能出错的地方是 image
属性 AWSRekognitionDetectLabelsRequest
应该是 AWSRekognitionImage
而不是像你传入的 UIImage
。你可以调用 UIImageJPEGRepresentation
从 UIImage 中获取原始字节。
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
如果您也像这样单独设置请求属性,调试起来应该也会容易得多。
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)
}
}
}
所以我一直在尝试使用 AWSRekognition SDK 来检测图像中的人脸和标签。但是,Amazon 没有关于如何将其 SDK 与 iOS 集成的文档。他们的链接显示了如何使用 Rekognition(开发人员指南),其中的示例仅在 Java 中且非常有限。
Amazon Rekognition Developer Guide
如果您单击他们的 "iOS Documentation",它会将您带到一般 iOS 文档页面,任何部分都没有 Rekognition 的迹象。
我想知道是否有人知道如何在 Swift 3 中集成 AWS Rekognition。如何初始化它并使用图像发出请求,接收带有标签的响应。
我已经下载了 AWSRekognition.framework
和 AWSCore.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")
}
非常感谢!
Web 上缺少 Rekognition iOS SDK 的文档,但 SDK 代码中的注释对我很有帮助。如果您按住 Cmd 并单击 Xcode 中的关键字,您应该能够在评论中找到您需要的所有信息。
从这里你可以看到密钥指的是以前注册的客户端,你可以使用 registerRekognitionWithConfiguration
,但你可以使用默认值跳过所有这些,如 Karthik 提到的:
let rekognitionClient = AWSRekognition.defaultRekognition()
我一直在进行面部检测,所以我没有在自己的代码中使用 AWSRekognitionDetectLabelsRequest
,但我认为你可能出错的地方是 image
属性 AWSRekognitionDetectLabelsRequest
应该是 AWSRekognitionImage
而不是像你传入的 UIImage
。你可以调用 UIImageJPEGRepresentation
从 UIImage 中获取原始字节。
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
如果您也像这样单独设置请求属性,调试起来应该也会容易得多。
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)
}
}
}