군침이 싹 도는 코딩
S3에 저장된 이미지 객체 탐지 API 본문
# 객체 탐지 API는 GET 메소드로 만들고 쿼리스트링으로 S3에 저장되어있는 이미지 파일 이름을 받아온다
class ObjectDetectionResource(Resource) :
# S3에 저장되어있는 이미지를 객체 탐지하는 API
def get(self):
# 클라이언트로부터 파일명을 받아온다
filename= request.args.get('filename')
# 위의 파일은 이미 S3에 있는 상황
# 따라서 aws의 rekognition 인공지능 서비스를 이용해서 object detection을 한다
# 리코그니션 서비스를 이용할 수 있는지 IAM 의 유저권한을 확인하고 설정해준다
client = boto3.client('rekognition', 'ap-northeast-2', aws_access_key_id = Config.ACCESS_KEY , aws_secret_access_key = Config.SECRET_ACCESS)
response = client.detect_labels(Image={'S3Object':{'Bucket':Config.S3_BUCKET,'Name':filename}}, MaxLabels = 10)
print(response)
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 {'result':'success','Labels':response['Labels']}, 200
# 코딩의 주석이 없는 부분은 모두 메뉴얼에 있는것을 그대로 복사 붙여넣기한것이다
주의할점은 리코그레이션을 사용할때는 IAM 권한설절이 되어있는지 확인한다
# 결과는 이런식으로 레이블이 쭉 나열된다
name_list = []
for label in response['Labels']:
name_list.append(label['Name'])
except Exception as e :
return {'error':str(e)}, 500
return {'result':'success','Labels':name_list}, 200
# 만약 출력결과의 이름만 뽑아 키워드형식으로 출력하고 싶다면 for문을 전부 지우고 이것만 써주도록한다
빈 리스트를 만들고 response의 레이블을 레이블에 저장한 뒤 빈 리스트에 레이블의 네임을 저장하라는뜻이다
그리고 마지막 리턴 부분을 name_list로 바꿔준다
# 강아지 사진을 넣어 키워드 형식으로 뽑은 결과는 이런식으로 나온다
# IAM에 들어가서 빨간줄표시가 추가되어있는지 꼭 확인한다
'Python > Flask' 카테고리의 다른 글
Flask 기본 구조 (0) | 2023.01.13 |
---|---|
사진과 글을 DB에 저장하는 API (0) | 2023.01.13 |
S3에 이미지 업로드하는 API (0) | 2023.01.12 |
리얼 타임 추천 시스템 API (0) | 2023.01.10 |
추천 시스템 API (0) | 2023.01.10 |