Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(AutoIt) 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
$oRest = ObjCreate("Chilkat.Rest") Local $bSuccess $oAuthAws = ObjCreate("Chilkat.AuthAws") $oAuthAws.AccessKey = "AWS_ACCESS_KEY" $oAuthAws.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.) $oAuthAws.Region = "us-west-2" $oAuthAws.ServiceName = "rekognition" ; SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date $oRest.SetAuthAws($oAuthAws) ; URL: https://rekognition.us-west-2.amazonaws.com/ Local $bTls = True Local $iPort = 443 Local $bAutoReconnect = True ; Don't forget to change the region domain (us-west-2.amazonaws.com) to your particular region. $bSuccess = $oRest.Connect("rekognition.us-west-2.amazonaws.com",$iPort,$bTls,$bAutoReconnect) If ($bSuccess <> True) Then ConsoleWrite("ConnectFailReason: " & $oRest.ConnectFailReason & @CRLF) ConsoleWrite($oRest.LastErrorText & @CRLF) Exit EndIf ; 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. $oBdJpg = ObjCreate("Chilkat.BinData") $bSuccess = $oBdJpg.LoadFile("qa_data/jpg/kid_blue_coat.jpg") If ($bSuccess <> True) Then ConsoleWrite("Failed to load the input JPG file." & @CRLF) Exit EndIf ; 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. $oSbJpg = ObjCreate("Chilkat.StringBuilder") $oBdJpg.GetEncodedSb("base64",$oSbJpg) $oJson = ObjCreate("Chilkat.JsonObject") $oJson.UpdateSb("Image.Bytes",$oSbJpg) $oJson.UpdateString("Attributes[0]","ALL") $oRest.AddHeader("Content-Type","application/x-amz-json-1.1") $oRest.AddHeader("X-Amz-Target","RekognitionService.DetectFaces") $oSbRequestBody = ObjCreate("Chilkat.StringBuilder") $oJson.EmitSb($oSbRequestBody) $oSbResponseBody = ObjCreate("Chilkat.StringBuilder") $bSuccess = $oRest.FullRequestSb("POST","/",$oSbRequestBody,$oSbResponseBody) If ($bSuccess <> True) Then ConsoleWrite($oRest.LastErrorText & @CRLF) Exit EndIf Local $iRespStatusCode = $oRest.ResponseStatusCode ConsoleWrite("response status code = " & $iRespStatusCode & @CRLF) If ($iRespStatusCode >= 400) Then ConsoleWrite("Response Status Code = " & $iRespStatusCode & @CRLF) ConsoleWrite("Response Header:" & @CRLF) ConsoleWrite($oRest.ResponseHeader & @CRLF) ConsoleWrite("Response Body:" & @CRLF) ConsoleWrite($oSbResponseBody.GetAsString() & @CRLF) Exit EndIf $oJResp = ObjCreate("Chilkat.JsonObject") $oJResp.LoadSb($oSbResponseBody) $oJResp.EmitCompact = False ConsoleWrite($oJResp.Emit() & @CRLF) ; 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 Local $iAgeRangeHigh Local $iAgeRangeLow Local $sBeardConfidence Local $bBeardValue Local $sBoundingBoxHeight Local $sBoundingBoxLeft Local $sBoundingBoxTop Local $sBoundingBoxWidth Local $sConfidence Local $sEyeglassesConfidence Local $bEyeglassesValue Local $sEyesOpenConfidence Local $bEyesOpenValue Local $sGenderConfidence Local $sGenderValue Local $sMouthOpenConfidence Local $bMouthOpenValue Local $sMustacheConfidence Local $bMustacheValue Local $sPosePitch Local $sPoseRoll Local $sPoseYaw Local $sQualityBrightness Local $sQualitySharpness Local $sSmileConfidence Local $bSmileValue Local $sSunglassesConfidence Local $bSunglassesValue Local $iJ Local $iCount_j Local $sV_Type Local $sX Local $sY Local $i = 0 Local $iCount_i = $oJResp.SizeOfArray("FaceDetails") While $i < $iCount_i $oJResp.I = $i $iAgeRangeHigh = $oJResp.IntOf("FaceDetails[i].AgeRange.High") $iAgeRangeLow = $oJResp.IntOf("FaceDetails[i].AgeRange.Low") $sBeardConfidence = $oJResp.StringOf("FaceDetails[i].Beard.Confidence") $bBeardValue = $oJResp.BoolOf("FaceDetails[i].Beard.Value") $sBoundingBoxHeight = $oJResp.StringOf("FaceDetails[i].BoundingBox.Height") $sBoundingBoxLeft = $oJResp.StringOf("FaceDetails[i].BoundingBox.Left") $sBoundingBoxTop = $oJResp.StringOf("FaceDetails[i].BoundingBox.Top") $sBoundingBoxWidth = $oJResp.StringOf("FaceDetails[i].BoundingBox.Width") $sConfidence = $oJResp.StringOf("FaceDetails[i].Confidence") $sEyeglassesConfidence = $oJResp.StringOf("FaceDetails[i].Eyeglasses.Confidence") $bEyeglassesValue = $oJResp.BoolOf("FaceDetails[i].Eyeglasses.Value") $sEyesOpenConfidence = $oJResp.StringOf("FaceDetails[i].EyesOpen.Confidence") $bEyesOpenValue = $oJResp.BoolOf("FaceDetails[i].EyesOpen.Value") $sGenderConfidence = $oJResp.StringOf("FaceDetails[i].Gender.Confidence") $sGenderValue = $oJResp.StringOf("FaceDetails[i].Gender.Value") $sMouthOpenConfidence = $oJResp.StringOf("FaceDetails[i].MouthOpen.Confidence") $bMouthOpenValue = $oJResp.BoolOf("FaceDetails[i].MouthOpen.Value") $sMustacheConfidence = $oJResp.StringOf("FaceDetails[i].Mustache.Confidence") $bMustacheValue = $oJResp.BoolOf("FaceDetails[i].Mustache.Value") $sPosePitch = $oJResp.StringOf("FaceDetails[i].Pose.Pitch") $sPoseRoll = $oJResp.StringOf("FaceDetails[i].Pose.Roll") $sPoseYaw = $oJResp.StringOf("FaceDetails[i].Pose.Yaw") $sQualityBrightness = $oJResp.StringOf("FaceDetails[i].Quality.Brightness") $sQualitySharpness = $oJResp.StringOf("FaceDetails[i].Quality.Sharpness") $sSmileConfidence = $oJResp.StringOf("FaceDetails[i].Smile.Confidence") $bSmileValue = $oJResp.BoolOf("FaceDetails[i].Smile.Value") $sSunglassesConfidence = $oJResp.StringOf("FaceDetails[i].Sunglasses.Confidence") $bSunglassesValue = $oJResp.BoolOf("FaceDetails[i].Sunglasses.Value") $iJ = 0 $iCount_j = $oJResp.SizeOfArray("FaceDetails[i].Emotions") While $iJ < $iCount_j $oJResp.J = $iJ $sConfidence = $oJResp.StringOf("FaceDetails[i].Emotions[j].Confidence") $sV_Type = $oJResp.StringOf("FaceDetails[i].Emotions[j].Type") $iJ = $iJ + 1 Wend $iJ = 0 $iCount_j = $oJResp.SizeOfArray("FaceDetails[i].Landmarks") While $iJ < $iCount_j $oJResp.J = $iJ $sV_Type = $oJResp.StringOf("FaceDetails[i].Landmarks[j].Type") $sX = $oJResp.StringOf("FaceDetails[i].Landmarks[j].X") $sY = $oJResp.StringOf("FaceDetails[i].Landmarks[j].Y") $iJ = $iJ + 1 Wend $i = $i + 1 Wend |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.