Краткое руководство. Обнаружение лиц на изображении с помощью REST API и PHPQuickstart: Detect faces in an image using the REST API and PHP

В этом кратком руководстве описано, как обнаруживать лица на изображении с помощью REST API распознавания лиц Azure и PHP.In this quickstart, you will use the Azure Face REST API with PHP to detect human faces in an image.

Предварительные требованияPrerequisites

  • Ключ подписки на API распознавания лиц.A Face API subscription key. Вы можете получить ключ бесплатной пробной подписки на странице Пробная версия Cognitive Services.You can get a free trial subscription key from Try Cognitive Services. Или следуйте инструкциям в руководстве по созданию учетной записи Cognitive Services, чтобы получить подписку на API распознавания лиц и свой ключ.Or, follow the instructions in Create a Cognitive Services account to subscribe to the Face API service and get your key.
  • Редактор кода, например Visual Studio Code.A code editor such as Visual Studio Code.
  • PHP-пакет HTTP_Request2.The PHP HTTP_Request2 package.
  • Веб-браузер с поддержкой PHP.A PHP-enabled web browser. Если вы еще не настроили его, вы можете сделать это, установив и настроив XAMPP на своем компьютере.If you have not set this up, you can do so by installing and setting up XAMPP on your machine.

Инициализация HTML-файлаInitialize the HTML file

Создайте файл HTML с именем detectFaces.htmlи добавьте в него следующий код.Create a new HTML file, detectFaces.html, and add the following code.

<html>
    <head>
        <title>Face Detect Sample</title>
    </head>
    <body></body>
</html>

Написание скрипта PHPWrite the PHP script

Добавьте следующий код в элемент body документа.Add the following code inside the body element of the document. Этот код позволяет создать основной пользовательский интерфейс с полем URL-адреса, кнопкой анализа лиц, областями ответа и отображения изображения.This code sets up a basic user interface with a URL field, an Analyze face button, a response pane, and an image display pane.

<?php
// Replace <Subscription Key> with a valid subscription key.
$ocpApimSubscriptionKey = '<Subscription Key>';

// You must use the same location in your REST call as you used to obtain
// your subscription keys. For example, if you obtained your subscription keys
// from westus, replace "westcentralus" in the URL below with "westus".
$uriBase = 'https://westcentralus.api.cognitive.microsoft.com/face/v1.0/';

$imageUrl =
    'https://upload.wikimedia.org/wikipedia/commons/3/37/Dagestani_man_and_woman.jpg';

// This sample uses the PHP5 HTTP_Request2 package
// (https://pear.php.net/package/HTTP_Request2).
require_once 'HTTP/Request2.php';

$request = new Http_Request2($uriBase . '/detect');
$url = $request->getUrl();

$headers = array(
    // Request headers
    'Content-Type' => 'application/json',
    'Ocp-Apim-Subscription-Key' => $ocpApimSubscriptionKey
);
$request->setHeader($headers);

$parameters = array(
    // Request parameters
    'returnFaceId' => 'true',
    'returnFaceLandmarks' => 'false',
    'returnFaceAttributes' => 'age,gender,headPose,smile,facialHair,glasses,' .
        'emotion,hair,makeup,occlusion,accessories,blur,exposure,noise');
$url->setQueryVariables($parameters);

$request->setMethod(HTTP_Request2::METHOD_POST);

// Request body parameters
$body = json_encode(array('url' => $imageUrl));

// Request body
$request->setBody($body);

try
{
    $response = $request->send();
    echo "<pre>" .
        json_encode(json_decode($response->getBody()), JSON_PRETTY_PRINT) . "</pre>";
}
catch (HttpException $ex)
{
    echo "<pre>" . $ex . "</pre>";
}
?>

Вам нужно будет обновить поле subscriptionKey, указав значение вашего ключа подписки, и изменить строку uriBase, чтобы она содержала идентификатор правильного региона (список конечных точек для всех регионов см. в документации по API распознавания лиц).You'll need to update the subscriptionKey field with the value of your subscription key, and you may need to change the uriBase string so that it contains the correct region identifier (see the Face API docs for a list of all region endpoints). Поле returnFaceAttributes определяет извлекаемые атрибуты лица. Эту строку вы можете изменить в зависимости от предполагаемого применения.The returnFaceAttributes field specifies which face attributes to retrieve; you may wish to change this string depending on your intended use.

Запуск сценарияRun the script

Откройте файл в веб-браузере с поддержкой PHP.Open the file in a PHP-enabled web browser. Вы должны получить такого вида строку JSON с данными распознавания лица.You should get a JSON string of Face data, like the following.

[
    {
        "faceId": "e93e0db1-036e-4819-b5b6-4f39e0f73509",
        "faceRectangle": {
            "top": 621,
            "left": 616,
            "width": 195,
            "height": 195
        },
        "faceAttributes": {
            "smile": 0,
            "headPose": {
                "pitch": 0,
                "roll": 6.8,
                "yaw": 3.7
            },
            "gender": "male",
            "age": 37,
            "facialHair": {
                "moustache": 0.4,
                "beard": 0.4,
                "sideburns": 0.1
            },
            "glasses": "NoGlasses",
            "emotion": {
                "anger": 0,
                "contempt": 0,
                "disgust": 0,
                "fear": 0,
                "happiness": 0,
                "neutral": 0.999,
                "sadness": 0.001,
                "surprise": 0
            },
            "blur": {
                "blurLevel": "high",
                "value": 0.89
            },
            "exposure": {
                "exposureLevel": "goodExposure",
                "value": 0.51
            },
            "noise": {
                "noiseLevel": "medium",
                "value": 0.59
            },
            "makeup": {
                "eyeMakeup": true,
                "lipMakeup": false
            },
            "accessories": [],
            "occlusion": {
                "foreheadOccluded": false,
                "eyeOccluded": false,
                "mouthOccluded": false
            },
            "hair": {
                "bald": 0.04,
                "invisible": false,
                "hairColor": [
                    {
                        "color": "black",
                        "confidence": 0.98
                    },
                    {
                        "color": "brown",
                        "confidence": 0.87
                    },
                    {
                        "color": "gray",
                        "confidence": 0.85
                    },
                    {
                        "color": "other",
                        "confidence": 0.25
                    },
                    {
                        "color": "blond",
                        "confidence": 0.07
                    },
                    {
                        "color": "red",
                        "confidence": 0.02
                    }
                ]
            }
        }
    },
    {
        "faceId": "37c7c4bc-fda3-4d8d-94e8-b85b8deaf878",
        "faceRectangle": {
            "top": 693,
            "left": 1503,
            "width": 180,
            "height": 180
        },
        "faceAttributes": {
            "smile": 0.003,
            "headPose": {
                "pitch": 0,
                "roll": 2,
                "yaw": -2.2
            },
            "gender": "female",
            "age": 56,
            "facialHair": {
                "moustache": 0,
                "beard": 0,
                "sideburns": 0
            },
            "glasses": "NoGlasses",
            "emotion": {
                "anger": 0,
                "contempt": 0.001,
                "disgust": 0,
                "fear": 0,
                "happiness": 0.003,
                "neutral": 0.984,
                "sadness": 0.011,
                "surprise": 0
            },
            "blur": {
                "blurLevel": "high",
                "value": 0.83
            },
            "exposure": {
                "exposureLevel": "goodExposure",
                "value": 0.41
            },
            "noise": {
                "noiseLevel": "high",
                "value": 0.76
            },
            "makeup": {
                "eyeMakeup": false,
                "lipMakeup": false
            },
            "accessories": [],
            "occlusion": {
                "foreheadOccluded": false,
                "eyeOccluded": false,
                "mouthOccluded": false
            },
            "hair": {
                "bald": 0.06,
                "invisible": false,
                "hairColor": [
                    {
                        "color": "black",
                        "confidence": 0.99
                    },
                    {
                        "color": "gray",
                        "confidence": 0.89
                    },
                    {
                        "color": "other",
                        "confidence": 0.64
                    },
                    {
                        "color": "brown",
                        "confidence": 0.34
                    },
                    {
                        "color": "blond",
                        "confidence": 0.07
                    },
                    {
                        "color": "red",
                        "confidence": 0.03
                    }
                ]
            }
        }
    }
]

Дополнительная информацияNext steps

Ознакомьтесь с API-интерфейсами распознавания лиц, которые используются для обнаружения лиц, обозначения их границ и возврата таких атрибутов, как возраст и пол.Explore the Face APIs used to detect human faces in an image, demarcate the faces with rectangles, and return attributes such as age and gender.