AWS

AWS의 rekognition API 테스트 코드 실행하기

HooSL 2022. 1. 14. 15:33
import boto3 #AWS 서비스를 사용하기 위해 boto3를 먼저 설치해주세요 $pip install boto3

def detect_labels(photo, bucket):

    client=boto3.client('rekognition', 'us-east-1'#사진이 있는 S3의 지역을 적어주세요,
                        aws_access_key_id = 자신의 access key 입력,
                        aws_secret_access_key = 자신의 access secret key 입력)#boto3 로부터 클라이언트를 받음

    response = client.detect_labels(Image={'S3Object':{'Bucket':bucket,'Name':photo}},
        MaxLabels=10)

    print('Detected labels for ' + photo) 
    print()   
    for label in response['Labels']:
        print ("Label: " + label['Name'])
        print ("Confidence: " + str(label['Confidence'])) # 확률
        print ("Instances:")
        for instance in label['Instances']:
            print ("  Bounding box") #위치값
            print ("    Top: " + str(instance['BoundingBox']['Top']))
            print ("    Left: " + str(instance['BoundingBox']['Left']))
            print ("    Width: " +  str(instance['BoundingBox']['Width']))
            print ("    Height: " +  str(instance['BoundingBox']['Height']))
            print ("  Confidence: " + str(instance['Confidence']))
            print()

        print ("Parents:")
        for parent in label['Parents']:
            print ("   " + parent['Name'])
        print ("----------")
        print ()
    return len(response['Labels'])

def main():
    photo='S3에 있는 사진명.jpg' #사진 이름
    bucket=자신의 S3버킷 이름
    label_count=detect_labels(photo, bucket)
    print("Labels detected: " + str(label_count))

if __name__ == "__main__":
    main()

 

테스트한 사진

 

 

결과

위 코딩처럼 해도 되지만

저는 config.py파일을 만들어 그 안에 Config 클래스에 변수로 다 저장 했습니다.

class Config :

    ACCESS_KEY = "access key입력"
    SECRET_ACCESS = "secret access key입력"
    S3_BUCKET = "S3 버킷 이름"

그리고 나머지 위처럼 config.py 파일을 만들고 하면 변수로 편하게 테스트가 가능합니다.

import boto3 #AWS 서비스를 사용하기 위해 boto3를 먼저 설치해주세요 $pip install boto3
from config import Config #제 AWS Access Key와 Secret Access Key가 있는 py파일입니다.

#Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
#PDX-License-Identifier: MIT-0 (For details, see https://github.com/awsdocs/amazon-rekognition-developer-guide/blob/master/LICENSE-SAMPLECODE.)

def detect_labels(photo, bucket):

    client=boto3.client('rekognition', 'us-east-1'#사진이 있는 S3의 지역을 적어주세요,
                        aws_access_key_id = Config.ACCESS_KEY,
                        aws_secret_access_key = Config.SECRET_ACCESS)#boto3 로부터 클라이언트를 받음

    response = client.detect_labels(Image={'S3Object':{'Bucket':bucket,'Name':photo}},
        MaxLabels=10)

    print('Detected labels for ' + photo) 
    print()   
    for label in response['Labels']:
        print ("Label: " + label['Name'])
        print ("Confidence: " + str(label['Confidence'])) # 확률
        print ("Instances:")
        for instance in label['Instances']:
            print ("  Bounding box") #위치값
            print ("    Top: " + str(instance['BoundingBox']['Top']))
            print ("    Left: " + str(instance['BoundingBox']['Left']))
            print ("    Width: " +  str(instance['BoundingBox']['Width']))
            print ("    Height: " +  str(instance['BoundingBox']['Height']))
            print ("  Confidence: " + str(instance['Confidence']))
            print()

        print ("Parents:")
        for parent in label['Parents']:
            print ("   " + parent['Name'])
        print ("----------")
        print ()
    return len(response['Labels'])


def main():
    photo='photo_2022-01-13T17_32_25.149009.jpg' #사진 이름
    bucket=Config.S3_BUCKET #S3_BUCKET변수에 제 S3이름을 넣어놨습니다.
    label_count=detect_labels(photo, bucket)
    print("Labels detected: " + str(label_count))


if __name__ == "__main__":
    main()