Object detection API = 해당 사진에 어떤 물체가 있는지 알려주는 API이다.
-> google Vision API, Amazon Rekognition 등이 있다.
아마존의 Rekognition를 이용)
-> postman에서 http method는 post, url 설정, Body에 form-data엔 Key와 Value(보낼 이미지 파일)을 세팅해논다.
def post(self) :
file = request.files.get("photo")
if file is None :
return {"error" : "파일이 존재하지 않습니다."}, 400
current_time = datetime.now()
new_file_name = current_time.isoformat().replace(":", "_") + ".jpg"
file.filename = new_file_name
s3 = boto3.client("s3", aws_access_key_id = Config.AWS_ACCESS_KEY_ID,
aws_secret_access_key = Config.AWS_SECRET_ACCESS_KEY)
try :
s3.upload_fileobj(file, Config.S3_BUCKET, file.filename,
ExtraArgs = {"ACL" : "public-read",
"ContentType" : "image/jpeg"})
except Exception as e :
print(e)
return {"error" : str(e)}, 500
# S3에 이미지가 있으니 rekognition 이용해서 object detection 한다.
label_list = self.detect_labels(new_file_name, Config.S3_BUCKET)
return {"result" : "success", "labels" : label_list, "count" : len(label_list)}, 200
def detect_labels(self, photo, bucket) :
client = boto3.client('rekognition', 'ap-northeast-2',
aws_access_key_id=Config.AWS_ACCESS_KEY_ID,
aws_secret_access_key=Config.AWS_SECRET_ACCESS_KEY)
response = client.detect_labels(Image={'S3Object':{'Bucket':bucket,'Name':photo}},
MaxLabels=10,
# Uncomment to use image properties and filtration settings
#Features=["GENERAL_LABELS", "IMAGE_PROPERTIES"],
#Settings={"GeneralLabels": {"LabelInclusionFilters":["Cat"]},
# "ImageProperties": {"MaxDominantColors":10}}
)
print('Detected labels for ' + photo)
print()
label_list = []
for label in response['Labels']:
print("Label: " + label['Name'])
print("Confidence: " + str(label['Confidence']))
if (label['Confidence']) >= 90 :
label_list.append(label['Name'])
return label_list
-> vscode에 위 코드 작성한다.
-> 정상적으로 실행된 모습이다.
'Restful API' 카테고리의 다른 글
[Restful API] 네이버 검색 API 사용해보기 (1) | 2023.12.18 |
---|---|
[Restful API] 이미지와 내용을 포스팅하는 API 만들기 (0) | 2023.12.18 |
[Restful API] 이미지를 S3에 업로드하는 API 만들기 (0) | 2023.12.18 |
[Restful API] 네이버 Papago API 사용해보기 (0) | 2023.12.18 |
[Restful API] [Error] Object of type Decimal is not JSON serializable 에러 해결 방법 (0) | 2023.12.12 |