in static/code/worker-safety/cloud-lambda.py [0:0]
def lambda_handler(event, context):
bucketName = event['Records'][0]['s3']['bucket']['name']
imageName = event['Records'][0]['s3']['object']['key']
scaleFactor = 4
imageWidth = 2688/scaleFactor
imageHeight = 1520/scaleFactor
personsWithHats, personsWithoutHats, hatsWihoutPerson = detectWorkerSafety(bucketName, imageName, imageWidth, imageHeight)
personsWithHatsCount = len(personsWithHats)
personsWithoutHatsCount = len(personsWithoutHats)
hatsWihoutPersonCount = len(hatsWihoutPerson)
pushToCloudWatch('PersonsWithSafetyHat', personsWithHatsCount)
pushToCloudWatch('PersonsWithoutSafetyHat', personsWithoutHatsCount)
outputMessage = "Person(s): {}".format(personsWithHatsCount+personsWithoutHatsCount)
outputMessage = outputMessage + "\nPerson(s) With Safety Hat: {}\nPerson(s) Without Safety Hat: {}".format(personsWithHatsCount, personsWithoutHatsCount)
print(outputMessage)
#imageUrl = "https://s3.amazonaws.com/{}/{}".format(bucketName, imageName)
s3_client = boto3.client('s3')
imageUrl = s3_client.generate_presigned_url('get_object', Params={'Bucket': bucketName, 'Key': imageName })
iotMessage = {'ImageUrl' :imageUrl, 'PersonsWithHat' : personsWithHats, 'PersonsWithoutHat' : personsWithoutHats, 'Message' : outputMessage}
sendMessageToIoTTopic(iotMessage)
return {
'statusCode': 200,
'body': json.dumps(outputMessage)
}