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()
'AWS' 카테고리의 다른 글
AWS Lambda서버, serverless로 python flask API 서비스 만들기(internal server error 해결 방법, s3에 올린 사진이 깨질 경우) (0) | 2022.03.04 |
---|---|
AWS Free Tier 설치하기 (0) | 2022.02.04 |
AWS의 rekognition API 포스트맨 이용하여 사진 labeling하기 (0) | 2022.01.14 |
AWS에 Numpy, Pandas Layer 만들기(AWS 레이어 만들기) (0) | 2022.01.12 |