1

J'ai donc essayé d'utiliser AWSRekognition SDK afin de détecter les visages et les étiquettes dans les images. Cependant, Amazon n'a aucune documentation sur la façon d'intégrer leur SDK avec iOS. Ils ont des liens qui montrent comment travailler avec Rekognition (Guide du développeur) avec des exemples seulement en Java et très limités.Comment utiliser AWS Rekognition pour détecter les étiquettes d'images et les visages dans Swift 3

Amazon Rekognition Developer Guide

Si vous cliquez sur leur "iOS Documentation", il vous amène à la page de documentation générale iOS, sans aucun signe de Rekognition dans une section.

AWS iOS Developer Guide

Je voulais savoir si quelqu'un sait comment intégrer AWS Rekognition dans Swift 3. Comment l'initialiser et faire une demande avec une image, recevoir une réponse avec les étiquettes.

J'ai déjà téléchargé le AWSRekognition.framework et le AWSCore.framework et je les ai ajoutés à mon projet. J'ai également importé les deux dans mon AppDelegate.swift et initialisé mes informations d'identification AWS.

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

J'ai aussi essayé d'initialiser Rekognition et construire une requête:

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") 
} 

Merci beaucoup!

+0

try 'let rekognitionClient: AWSRekognition = AWSRekognition.default()' – Karthik

Répondre

3

La documentation sur le Web pour le Rekognition iOS SDK fait défaut, mais les commentaires dans le code SDK ont été très utiles pour moi. Si vous détenez Cmd en cliquant sur un mot clé dans Xcode, vous devriez pouvoir trouver toutes les informations dont vous avez besoin dans les commentaires.

De cela, vous pouvez voir que la clé fait référence à un client déjà enregistré que vous pouvez faire avec registerRekognitionWithConfiguration, mais vous pouvez ignorer tout cela en utilisant la valeur par défaut comme Karthik mentionné:

let rekognitionClient = AWSRekognition.defaultRekognition() 

Je suis travailler avec la détection de visage, donc je n'ai pas utilisé AWSRekognitionDetectLabelsRequest dans mon propre code, mais je pense que vous pourriez vous tromper, c'est que la propriété image de AWSRekognitionDetectLabelsRequest devrait être un AWSRekognitionImage et non un UIImage comme vous passez. Vous pouvez appeler UIImageJPEGRepresentation pour obtenir les octets bruts d'un 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 

Il devrait également être beaucoup plus facile à déboguer si vous définissez les propriétés de la requête individuellement de la même manière.

+0

Bien! Cela a fonctionné, merci beaucoup! –

+0

Avez-vous une démo rapide pour AWS Rekognition? –

-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) 



     } 
    } 

}