Sample code for 30+ languages & platforms
AutoIt

Amazon Rekognition - Detect Faces in an Image

See more Amazon Rekognition Examples

Detects faces within an image that is provided as input. This example passes theimage as base64-encoded image bytes.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

$oRest = ObjCreate("Chilkat.Rest")

$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:
; (image:https://example-code.com/images/kid_blue_coat.jpg/endImage)

; 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