[DAY3]_개발일지: 안면인식 & 문자인식

1. 학습내용

  1. Face Detection - 안면인식
  2. OCR - 문자인식

2. 상세내용


  • Face Detection - 안면인식
  • # 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 - 문자인식
  • # 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>

    좋은 웹페이지 즐겨찾기