빠른 시작: 이미지에서 얼굴을 감지 및 포착하는 Python 스크립트 만들기Quickstart: Create a Python script to detect and frame faces in an image

이 빠른 시작에서는 Azure Face API를 사용하여 Python SDK를 통해 원격 이미지에서 사람 얼굴을 감지하는 Python 스크립트를 만들 것입니다.In this quickstart, you will create a Python script that uses the Azure Face API, through the Python SDK, to detect human faces in a remote image. 이 애플리케이션은 선택한 이미지를 표시하고 감지된 각 얼굴 주위에 프레임을 그립니다.The application displays a selected image and draws a frame around each detected face.

Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.If you don't have an Azure subscription, create a free account before you begin.

필수 조건Prerequisites

Face SDK 가져오기Get the Face SDK

명령 프롬프트를 열고 다음 명령을 실행하여 Face Python SDK를 설치합니다.Install the Face Python SDK by opening the command prompt and running the following command:

pip install cognitive_face

이미지에서 얼굴 감지Detect Faces in an image

_FaceQuickstart.py_라는 새 Python 스크립트를 만들고 다음 코드를 추가합니다.Create a new Python script named FaceQuickstart.py and add the following code. 이 코드는 얼굴 감지의 핵심 기능을 처리합니다.This code handles the core functionality of face detection. <Subscription Key>를 키 값으로 바꿔야 합니다.You will need to replace <Subscription Key> with the value of your key. 또한 키의 올바른 지역 식별자를 사용하도록 BASE_URL 값을 변경해야 할 수도 있습니다(모든 지역 엔드포인트 목록에 대해서는 Face API 설명서 참조).You may also need to change the value of BASE_URL to use the correct region identifier for your key (see the Face API docs for a list of all region endpoints). 평가판 구독 키는 westus 지역에 생성됩니다.Free trial subscription keys are generated in the westus region. 필요에 따라 img_url을 사용하려는 이미지의 URL로 설정합니다.Optionally, set img_url to the URL of any image you'd like to use.

이 스크립트는 Detect REST API를 래핑하고 얼굴 목록을 반환하는 cognitive_face.face.detect 메서드를 호출하여 얼굴을 감지합니다.The script will detect faces by calling the cognitive_face.face.detect method, which wraps the Detect REST API and returns a list of faces.

import cognitive_face as CF

# Replace with a valid subscription key (keeping the quotes in place).
KEY = '<Subscription Key>'
CF.Key.set(KEY)

# Replace with your regional Base URL
BASE_URL = 'https://westus.api.cognitive.microsoft.com/face/v1.0/'
CF.BaseUrl.set(BASE_URL)

# You can use this example JPG or replace the URL below with your own URL to a JPEG image.
img_url = 'https://raw.githubusercontent.com/Microsoft/Cognitive-Face-Windows/master/Data/detection1.jpg'
faces = CF.face.detect(img_url)
print(faces)

앱 시험Try the app

python FaceQuickstart.py 명령으로 앱을 실행합니다.Run the app with the command python FaceQuickstart.py. 콘솔 창에 다음과 같은 텍스트 응답이 표시됩니다.You should get a text response in the console window, like the following:

[{'faceId': '26d8face-9714-4f3e-bfa1-f19a7a7aa240', 'faceRectangle': {'top': 124, 'left': 459, 'width': 227, 'height': 227}}]

출력은 감지된 얼굴 목록을 나타냅니다.The output represents a list of detected faces. 목록의 각 항목은 dict 인스턴스이고, 여기서 faceId는 감지된 얼굴의 고유 ID이고 faceRectangle은 감지된 얼굴의 위치를 설명합니다.Each item in the list is a dict instance where faceId is a unique ID for the detected face and faceRectangle describes the position of the detected face.

참고

Face ID는 24시간 후에 만료됩니다. 장기간 유지하려면 얼굴 데이터를 명시적으로 저장해야 합니다.Face IDs expire after 24 hours; you will need to store face data explicitly if you wish to keep it long-term.

얼굴 사각형 그리기Draw face rectangles

이전 명령에서 얻은 좌표를 사용하여 이미지에 각 얼굴을 시각적으로 나타내는 사각형을 그릴 수 있습니다.Using the coordinates that you received from the previous command, you can draw rectangles on the image to visually represent each face. Pillow 이미지 모듈을 사용하려면 Pillow(pip install pillow)를 설치해야 합니다.You will need to install Pillow (pip install pillow) to use the Pillow Image Module. FaceQuickstart.py 맨 위에 다음 코드를 추가합니다.At the top of FaceQuickstart.py, add the following code:

import requests
from io import BytesIO
from PIL import Image, ImageDraw

그런 다음, 스크립트 맨 아래에 다음 코드를 추가합니다.Then, at the bottom of your script, add the following code. 이 코드는 사각형 좌표를 구문 분석하는 간단한 함수를 만들고, Pillow를 사용하여 원래 이미지에 사각형을 그립니다.This code creates a simple function for parsing the rectangle coordinates, and uses Pillow to draw rectangles on the original image. 그런 다음, 기본 이미지 뷰어에 이미지가 표시됩니다.Then, it displays the image in your default image viewer.

# Convert width height to a point in a rectangle


def getRectangle(faceDictionary):
    rect = faceDictionary['faceRectangle']
    left = rect['left']
    top = rect['top']
    bottom = left + rect['height']
    right = top + rect['width']
    return ((left, top), (bottom, right))


# Download the image from the url
response = requests.get(img_url)
img = Image.open(BytesIO(response.content))

# For each face returned use the face rectangle and draw a red box.
draw = ImageDraw.Draw(img)
for face in faces:
    draw.rectangle(getRectangle(face), outline='red')

# Display the image in the users default image browser.
img.show()

앱 실행Run the app

먼저 기본 이미지 뷰어를 선택하라는 메시지가 표시될 수 있습니다.You may be prompted to select a default image viewer first. 그 후 다음과 비슷한 이미지가 표시됩니다.Then, you should see an image like the following. 콘솔 창에 사각형 데이터가 출력된 것도 보일 것입니다.You should also see the rectangle data printed in the console window.

얼굴 주위에 빨간색 사각형이 그려진 젊은 여자

다음 단계Next steps

이 빠른 시작에서는 Face API Python SDK를 사용하는 기본 프로세스를 살펴보고, 이미지에서 얼굴을 감지하여 프레임을 그리는 스크립트를 작성했습니다.In this quickstart, you learned the basic process for using the Face API Python SDK and created a script to detect and frame faces in an image. 다음으로, 좀 더 복잡한 Python SDK 사용 예제를 살펴보겠습니다.Next, explore the use of the Python SDK in a more complex example. GitHub에서 Cognitive Face Python 샘플로 이동하여 프로젝트 폴더에 복제하고, README.md 파일의 지침을 따르세요.Go to the Cognitive Face Python sample on GitHub, clone it to your project folder, and follow the instructions in the README.md file.