[DAY3]_개발일지: 안면인식 & 문자인식
1. 학습내용
- Face Detection - 안면인식
- OCR - 문자인식
2. 상세내용
# Face API Sample
face api는 인물 분석을 통해서 다양한 정보를 제공해 줍니다. Azure Portal에서 Face API를 먼저 생성하고 접속에 필요한 URL과 subscription key를 가져와서 보여 줍니다.
관련된 라이브러리를 가져옵니다. request는 웹 통신을 위해서 가져오고 BytesIO, Image는 이미지를 처리하기 위해서 사용하고 있습니다.
ImageDraw, ImageFont는 이미지 위에 선을 긋거나 글씨를 넣기 위해서 사용됩니다.
import requests
from io import BytesIO
from PIL import Image, ImageDraw, ImageFont
Subscription Key와 서비스의 주소를 설정합니다.
subscription_key = 'cfed609ad3ef4031bb274bb3e808e302'
faceDetection_url = 'https://facedetect00.cognitiveservices.azure.com/face/v1.0/detect'
분석에 사용할 이미지를 확인합니다.
image_url = 'https://newsimg.sedaily.com/2021/04/21/22L657OAYV_1.jpg'
img = Image.open(BytesIO(requests.get(image_url).content))
headers = {'Ocp-Apim-Subscription-key': subscription_key}
params = {
'returnFaceID' : 'true',
'returnFaceAttributes' : 'age,gender,emotion'
}
data = {'url' : image_url}
response = requests.post(faceDetection_url,
headers = headers,
params = params,
json = data)
faces = response.json()
draw = ImageDraw.Draw(img)
for face in faces:
rect = face['faceRectangle']
left = rect['left']
top = rect['top']
width = rect['width']
height = rect['height']
draw.rectangle(((left, top),(left + width, top + height)),outline='blue')
face_info = face['faceAttributes']
emotion = face_info['emotion']
happiness = emotion['happiness']
gender = face_info['gender']
result = 'Gender:' + gender + ' happiness:' + str(happiness * 100) +'%'
draw.text((left, top),result, fill='blue')
# OCR 실습
import requests
from PIL import Image
from io import BytesIO
import matplotlib.pyplot as plt
subscription_key = '234a97e32f8447c19fbf3836053ff32c'
vision_base_url = 'https://daeguaivision00.cognitiveservices.azure.com/vision/v2.0/'
ocr_url = vision_base_url + 'ocr'
## 분석할 이미지를 셋팅 한다.
image_url = 'https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Atomist_quote_from_Democritus.png/338px-Atomist_quote_from_Democritus.png'
img = Image.open(BytesIO(requests.get(image_url).content))
headers = {'Ocp-Apim-Subscription-Key': subscription_key}
params = {'language': 'unk', 'detectOrientation': 'true'} #unk(unknown), detectOrientation(이미지 바로 세우기)
data = {'url': image_url}
response = requests.post(ocr_url,
headers=headers,
params=params,
json=data)
analysis = response.json()
line_infos = [region["lines"] for region in analysis["regions"]]
#for문 먼저 반복해서 배열만들고, 그 배열[region]에서 또 배열로 따로 빼서 변수에 넣기
word_infos = []
for line in line_infos:
for word_metadata in line:
for word_info in word_metadata["words"]:
word_infos.append(word_info)
word_infos
3. 금일소감
<ol>
<li>눈으로 결과가 보이는 수업이라서 좋았다</li>
<li>솔직하게 외우는건 불가능하지만 클론코딩을 하면서 흐름을 다시 외워야겠다</li>
</ol>
Author And Source
이 문제에 관하여([DAY3]_개발일지: 안면인식 & 문자인식), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@hanseungjune/-2DAY개발일지-안면인식-문자인식저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)