クイック スタート: 画像内の顔を検出してフレームに収める Python スクリプトの作成Quickstart: Create a Python script to detect and frame faces in an image

このクイック スタートでは、リモート画像内の人の顔を検出するシンプルな Python スクリプトを作成します。このスクリプトでは、Python SDK を介して Azure Face API を使用します。In this quickstart, you will create a simple 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

画像内の顔を検出するDetect Faces in an image

新しい Python スクリプト FaceQuickstart.py を作成します。Create a new Python script, FaceQuickstart.py. 次のコードを追加します。Add the following code. これは、顔検出のコア機能です。This is 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.

このスクリプトでは、cognitive_face.face.detect メソッドを呼び出して顔を検出します。これは、Detect REST API をラップし、顔のリストを返します。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

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

BASE_URL = 'https://westus.api.cognitive.microsoft.com/face/v1.0/'  # Replace with your regional Base URL
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}}]

これは、検出された顔のリストです。This is 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 の Image モジュールを使用するには、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 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.