Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(Excel) Amazon Rekognition - Detect Faces in an ImageSee more Amazon Rekognition ExamplesDetects faces within an image that is provided as input. This example passes theimage as base64-encoded image bytes. For more information, see https://docs.aws.amazon.com/rekognition/latest/dg/API_DetectFaces.html
Dim rest As Chilkat.Rest Set rest = Chilkat.NewRest Dim authAws As Chilkat.AuthAws Set authAws = Chilkat.NewAuthAws authAws.AccessKey = "AWS_ACCESS_KEY" authAws.SecretKey = "AWS_SECRET_KEY" ' Don't forget to change the region to your particular region. (Also make the same change in the call to Connect below.) authAws.Region = "us-west-2" authAws.ServiceName = "rekognition" ' SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date Dim success As Boolean success = rest.SetAuthAws(authAws) ' URL: https://rekognition.us-west-2.amazonaws.com/ bTls = True port = 443 bAutoReconnect = True ' Don't forget to change the region domain (us-west-2.amazonaws.com) to your particular region. success = rest.Connect("rekognition.us-west-2.amazonaws.com",port,bTls,bAutoReconnect) If (success <> True) Then Debug.Print "ConnectFailReason: "; rest.ConnectFailReason Debug.Print rest.LastErrorText Exit Sub End If ' Note: The above code does not need to be repeatedly called for each REST request. ' The rest object can be setup once, and then many requests can be sent. Chilkat will automatically ' reconnect within a FullRequest* method as needed. It is only the very first connection that is explicitly ' made via the Connect method. ' Load the JPG to be passed as base64 in the JSON. Dim bdJpg As Chilkat.BinData Set bdJpg = Chilkat.NewBinData success = bdJpg.LoadFile("qa_data/jpg/kid_blue_coat.jpg") If (success <> True) Then Debug.Print "Failed to load the input JPG file." Exit Sub End If ' We wish to send the following JSON in the body of our HTTP request: ' { ' "Image": { ' "Bytes": "base64_image_bytes" ' } ' "Attributes": [ ' "ALL" ' ] ' } ' Here is the image we used for testing: ' Convert binary image bytes to base64. ' Note: We are explicitly keeping the data inside Chilkat to avoid having to pass large strings ' as arguments to function calls. This is important for some programming languages. Dim sbJpg As Chilkat.StringBuilder Set sbJpg = Chilkat.NewStringBuilder success = bdJpg.GetEncodedSb("base64",sbJpg) Dim json As Chilkat.JsonObject Set json = Chilkat.NewJsonObject success = json.UpdateSb("Image.Bytes",sbJpg) success = json.UpdateString("Attributes[0]","ALL") success = rest.AddHeader("Content-Type","application/x-amz-json-1.1") success = rest.AddHeader("X-Amz-Target","RekognitionService.DetectFaces") Dim sbRequestBody As Chilkat.StringBuilder Set sbRequestBody = Chilkat.NewStringBuilder success = json.EmitSb(sbRequestBody) Dim sbResponseBody As Chilkat.StringBuilder Set sbResponseBody = Chilkat.NewStringBuilder success = rest.FullRequestSb("POST","/",sbRequestBody,sbResponseBody) If (success <> True) Then Debug.Print rest.LastErrorText Exit Sub End If respStatusCode = rest.ResponseStatusCode Debug.Print "response status code = "; respStatusCode If (respStatusCode >= 400) Then Debug.Print "Response Status Code = "; respStatusCode Debug.Print "Response Header:" Debug.Print rest.ResponseHeader Debug.Print "Response Body:" Debug.Print sbResponseBody.GetAsString() Exit Sub End If Dim jResp As Chilkat.JsonObject Set jResp = Chilkat.NewJsonObject success = jResp.LoadSb(sbResponseBody) jResp.EmitCompact = False Debug.Print jResp.Emit() ' Sample JSON response: ' (Sample code for parsing the JSON response is shown below) ' { ' "FaceDetails": [ ' { ' "AgeRange": { ' "High": 18, ' "Low": 8 ' }, ' "Beard": { ' "Confidence": 98.06282806396484, ' "Value": false ' }, ' "BoundingBox": { ' "Height": 0.327279269695282, ' "Left": 0.5339247584342957, ' "Top": 0.23660442233085632, ' "Width": 0.35611653327941895 ' }, ' "Confidence": 99.99732971191406, ' "Emotions": [ ' { ' "Confidence": 99.5849380493164, ' "Type": "HAPPY" ' }, ' { ' "Confidence": 0.15533843636512756, ' "Type": "CALM" ' }, ' { ' "Confidence": 0.08864031732082367, ' "Type": "SURPRISED" ' }, ' { ' "Confidence": 0.05476664379239082, ' "Type": "SAD" ' }, ' { ' "Confidence": 0.042048510164022446, ' "Type": "CONFUSED" ' }, ' { ' "Confidence": 0.038942769169807434, ' "Type": "DISGUSTED" ' }, ' { ' "Confidence": 0.021463459357619286, ' "Type": "FEAR" ' }, ' { ' "Confidence": 0.013858155347406864, ' "Type": "ANGRY" ' } ' ], ' "Eyeglasses": { ' "Confidence": 98.5116195678711, ' "Value": false ' }, ' "EyesOpen": { ' "Confidence": 99.65477752685547, ' "Value": true ' }, ' "Gender": { ' "Confidence": 97.1164321899414, ' "Value": "Female" ' }, ' "Landmarks": [ ' { ' "Type": "eyeLeft", ' "X": 0.6554790735244751, ' "Y": 0.35153862833976746 ' }, ' { ' "Type": "eyeRight", ' "X": 0.7940073609352112, ' "Y": 0.38292214274406433 ' }, ' { ' "Type": "mouthLeft", ' "X": 0.6188991069793701, ' "Y": 0.46431097388267517 ' }, ' { ' "Type": "mouthRight", ' "X": 0.7352844476699829, ' "Y": 0.490242063999176 ' }, ' { ' "Type": "nose", ' "X": 0.7125006914138794, ' "Y": 0.44607019424438477 ' }, ' { ' "Type": "leftEyeBrowLeft", ' "X": 0.6096581220626831, ' "Y": 0.3071737587451935 ' }, ' { ' "Type": "leftEyeBrowRight", ' "X": 0.6628581285476685, ' "Y": 0.3133310079574585 ' }, ' { ' "Type": "leftEyeBrowUp", ' "X": 0.7027584314346313, ' "Y": 0.33200803399086 ' }, ' { ' "Type": "rightEyeBrowLeft", ' "X": 0.7813941240310669, ' "Y": 0.35023579001426697 ' }, ' { ' "Type": "rightEyeBrowRight", ' "X": 0.8213478922843933, ' "Y": 0.34993964433670044 ' }, ' { ' "Type": "rightEyeBrowUp", ' "X": 0.8495538234710693, ' "Y": 0.36189284920692444 ' }, ' { ' "Type": "leftEyeLeft", ' "X": 0.629088282585144, ' "Y": 0.34286588430404663 ' }, ' { ' "Type": "leftEyeRight", ' "X": 0.6820939183235168, ' "Y": 0.3586524724960327 ' }, ' { ' "Type": "leftEyeUp", ' "X": 0.6580297946929932, ' "Y": 0.3468707501888275 ' }, ' { ' "Type": "leftEyeDown", ' "X": 0.6537532210350037, ' "Y": 0.35663917660713196 ' }, ' { ' "Type": "rightEyeLeft", ' "X": 0.7655976414680481, ' "Y": 0.3776427209377289 ' }, ' { ' "Type": "rightEyeRight", ' "X": 0.8166338801383972, ' "Y": 0.38544225692749023 ' }, ' { ' "Type": "rightEyeUp", ' "X": 0.7969376444816589, ' "Y": 0.37844377756118774 ' }, ' { ' "Type": "rightEyeDown", ' "X": 0.7909533977508545, ' "Y": 0.3877102732658386 ' }, ' { ' "Type": "noseLeft", ' "X": 0.6727234721183777, ' "Y": 0.44030481576919556 ' }, ' { ' "Type": "noseRight", ' "X": 0.7237889170646667, ' "Y": 0.45200300216674805 ' }, ' { ' "Type": "mouthUp", ' "X": 0.6882695555686951, ' "Y": 0.4740942418575287 ' }, ' { ' "Type": "mouthDown", ' "X": 0.6720560789108276, ' "Y": 0.5046101808547974 ' }, ' { ' "Type": "leftPupil", ' "X": 0.6554790735244751, ' "Y": 0.35153862833976746 ' }, ' { ' "Type": "rightPupil", ' "X": 0.7940073609352112, ' "Y": 0.38292214274406433 ' }, ' { ' "Type": "upperJawlineLeft", ' "X": 0.5517005324363708, ' "Y": 0.30355724692344666 ' }, ' { ' "Type": "midJawlineLeft", ' "X": 0.5320234894752502, ' "Y": 0.43352627754211426 ' }, ' { ' "Type": "chinBottom", ' "X": 0.6419994831085205, ' "Y": 0.5531964302062988 ' }, ' { ' "Type": "midJawlineRight", ' "X": 0.7752369046211243, ' "Y": 0.48957017064094543 ' }, ' { ' "Type": "upperJawlineRight", ' "X": 0.8515444397926331, ' "Y": 0.37258899211883545 ' } ' ], ' "MouthOpen": { ' "Confidence": 68.26280212402344, ' "Value": false ' }, ' "Mustache": { ' "Confidence": 99.73213195800781, ' "Value": false ' }, ' "Pose": { ' "Pitch": -11.299633026123047, ' "Roll": 17.6924991607666, ' "Yaw": 13.582314491271973 ' }, ' "Quality": { ' "Brightness": 83.72581481933594, ' "Sharpness": 67.22731018066406 ' }, ' "Smile": { ' "Confidence": 98.4793930053711, ' "Value": true ' }, ' "Sunglasses": { ' "Confidence": 99.3582992553711, ' "Value": false ' } ' } ' ] ' } ' Sample code for parsing the JSON response... ' Use the following online tool to generate parsing code from sample JSON: ' Generate Parsing Code from JSON i = 0 count_i = jResp.SizeOfArray("FaceDetails") Do While i < count_i jResp.I = i AgeRangeHigh = jResp.IntOf("FaceDetails[i].AgeRange.High") AgeRangeLow = jResp.IntOf("FaceDetails[i].AgeRange.Low") BeardConfidence = jResp.StringOf("FaceDetails[i].Beard.Confidence") BeardValue = jResp.BoolOf("FaceDetails[i].Beard.Value") BoundingBoxHeight = jResp.StringOf("FaceDetails[i].BoundingBox.Height") BoundingBoxLeft = jResp.StringOf("FaceDetails[i].BoundingBox.Left") BoundingBoxTop = jResp.StringOf("FaceDetails[i].BoundingBox.Top") BoundingBoxWidth = jResp.StringOf("FaceDetails[i].BoundingBox.Width") Confidence = jResp.StringOf("FaceDetails[i].Confidence") EyeglassesConfidence = jResp.StringOf("FaceDetails[i].Eyeglasses.Confidence") EyeglassesValue = jResp.BoolOf("FaceDetails[i].Eyeglasses.Value") EyesOpenConfidence = jResp.StringOf("FaceDetails[i].EyesOpen.Confidence") EyesOpenValue = jResp.BoolOf("FaceDetails[i].EyesOpen.Value") GenderConfidence = jResp.StringOf("FaceDetails[i].Gender.Confidence") GenderValue = jResp.StringOf("FaceDetails[i].Gender.Value") MouthOpenConfidence = jResp.StringOf("FaceDetails[i].MouthOpen.Confidence") MouthOpenValue = jResp.BoolOf("FaceDetails[i].MouthOpen.Value") MustacheConfidence = jResp.StringOf("FaceDetails[i].Mustache.Confidence") MustacheValue = jResp.BoolOf("FaceDetails[i].Mustache.Value") PosePitch = jResp.StringOf("FaceDetails[i].Pose.Pitch") PoseRoll = jResp.StringOf("FaceDetails[i].Pose.Roll") PoseYaw = jResp.StringOf("FaceDetails[i].Pose.Yaw") QualityBrightness = jResp.StringOf("FaceDetails[i].Quality.Brightness") QualitySharpness = jResp.StringOf("FaceDetails[i].Quality.Sharpness") SmileConfidence = jResp.StringOf("FaceDetails[i].Smile.Confidence") SmileValue = jResp.BoolOf("FaceDetails[i].Smile.Value") SunglassesConfidence = jResp.StringOf("FaceDetails[i].Sunglasses.Confidence") SunglassesValue = jResp.BoolOf("FaceDetails[i].Sunglasses.Value") j = 0 count_j = jResp.SizeOfArray("FaceDetails[i].Emotions") Do While j < count_j jResp.J = j Confidence = jResp.StringOf("FaceDetails[i].Emotions[j].Confidence") v_Type = jResp.StringOf("FaceDetails[i].Emotions[j].Type") j = j + 1 Loop j = 0 count_j = jResp.SizeOfArray("FaceDetails[i].Landmarks") Do While j < count_j jResp.J = j v_Type = jResp.StringOf("FaceDetails[i].Landmarks[j].Type") X = jResp.StringOf("FaceDetails[i].Landmarks[j].X") Y = jResp.StringOf("FaceDetails[i].Landmarks[j].Y") j = j + 1 Loop i = i + 1 Loop |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.