얼굴 감지 데이터 가져오기Get face detection data

이 가이드에는 특성을 추출할 성별, 연령 또는 자세와 같은 지정된 된 이미지에서 얼굴 감지를 사용 하는 방법을 보여 줍니다.This guide demonstrates how to use face detection to extract attributes like gender, age, or pose from a given image. 이 가이드에서 코드 조각을 작성 된 C# Azure Cognitive Services Face API 클라이언트 라이브러리를 사용 하 여 합니다.The code snippets in this guide are written in C# by using the Azure Cognitive Services Face API client library. 동일한 기능을 통해 제공 합니다 REST API합니다.The same functionality is available through the REST API.

표시 하는이 가이드에 있습니다.This guide shows you how to:

  • 이미지에서 얼굴의 크기와 위치를 가져옵니다.Get the locations and dimensions of faces in an image.
  • 이미지에서 입 삼아, 코, 등의 다양 한 얼굴 랜드마크의 위치를 가져옵니다.Get the locations of various face landmarks, such as pupils, nose, and mouth, in an image.
  • 성별, 연령, 감정, 및 기타 특성 검색 된 얼굴을 추측 합니다.Guess the gender, age, emotion, and other attributes of a detected face.

설정Setup

이 가이드에서는 이미 생성 하는 가정 된 FaceClient 라는 개체 faceClient, 얼굴 구독 키 및 끝점 URL을 사용 하 여 합니다.This guide assumes that you already constructed a FaceClient object, named faceClient, with a Face subscription key and endpoint URL. 여기에서 호출 하 여 얼굴 감지 기능을 사용할 수 있습니다 DetectWithUrlAsync,이 가이드에서는 사용 되는 또는 DetectWithStreamAsync합니다.From here, you can use the face detection feature by calling either DetectWithUrlAsync, which is used in this guide, or DetectWithStreamAsync. 이 기능을 설정 하는 방법에 대 한 자세한 내용은 참조는 검색 얼굴에 대 한 빠른 시작 C# 합니다.For instructions on how to set up this feature, see the Detect faces quickstart for C#.

이 가이드 검색 호출의 세부 사항에 중점을 두고, 전달할 수 있는 인수 등 및 반환된 된 데이터를 사용 하 여 수행할 수 있는 작업This guide focuses on the specifics of the Detect call, such as what arguments you can pass and what you can do with the returned data. 필요한 기능만 쿼리 하는 것이 좋습니다.We recommend that you query for only the features you need. 각 작업에는 완료 하는 데 추가 시간이 걸립니다.Each operation takes additional time to complete.

기본 얼굴 데이터 가져오기Get basic face data

얼굴 찾고 이미지에 해당 위치를 가져올 메서드를 호출 합니다 returnFaceId 매개 변수 설정 true합니다.To find faces and get their locations in an image, call the method with the returnFaceId parameter set to true. 이 설정은 기본값입니다.This setting is the default.

IList<DetectedFace> faces = await faceClient.Face.DetectWithUrlAsync(imageUrl, true, false, null);

반환 된 쿼리하면 DetectedFace 개체가 고유한 Id 및 글꼴의 픽셀 좌표를 제공 하는 사각형입니다.You can query the returned DetectedFace objects for their unique IDs and a rectangle that gives the pixel coordinates of the face.

foreach (var face in faces)
{
    string id = face.FaceId.ToString();
    FaceRectangle rect = face.FaceRectangle;
}

글꼴의 크기와 위치를 구문 분석 하는 방법에 대 한 자세한 내용은 FaceRectangle합니다.For information on how to parse the location and dimensions of the face, see FaceRectangle. 일반적으로이 사각형 눈, 눈 썹, 코, 및 입 포함 됩니다.Usually, this rectangle contains the eyes, eyebrows, nose, and mouth. 헤드, 귀, 및 chin 위쪽에 반드시 포함이 되지 않습니다.The top of head, ears, and chin aren't necessarily included. 전체 헤드를 자르거나 중간 샷 세로, 사진 ID 형식 이미지를 만들기 위해 아마도 가져오기 얼굴 사각형을 사용 하려면 각 방향에 사각형을 확장할 수 있습니다.To use the face rectangle to crop a complete head or get a mid-shot portrait, perhaps for a photo ID-type image, you can expand the rectangle in each direction.

얼굴 랜드마크 가져오기Get face landmarks

랜드마크 얼굴 는 삼아 코의 팁 등을 얼굴 찾기 쉽게 요소의 집합입니다.Face landmarks are a set of easy-to-find points on a face, such as the pupils or the tip of the nose. 얼굴 랜드마크 데이터를 가져오려면 다음을 설정 합니다 returnFaceLandmarks 매개 변수를 true합니다.To get face landmark data, set the returnFaceLandmarks parameter to true.

IList<DetectedFace> faces = await faceClient.Face.DetectWithUrlAsync(imageUrl, true, true, null);

다음 코드는 코 및 동공의 위치를 검색하는 방법을 보여줍니다.The following code demonstrates how you might retrieve the locations of the nose and pupils:

foreach (var face in faces)
{
    var landmarks = face.FaceLandmarks;

    double noseX = landmarks.NoseTip.X;
    double noseY = landmarks.NoseTip.Y;

    double leftPupilX = landmarks.PupilLeft.X;
    double leftPupilY = landmarks.PupilLeft.Y;

    double rightPupilX = landmarks.PupilRight.X;
    double rightPupilY = landmarks.PupilRight.Y;
}

얼굴 랜드마크 데이터 정확 하 게 발생 하는 방향을 계산에 사용할 수도 있습니다.You also can use face landmarks data to accurately calculate the direction of the face. 예를 들어 명사 센터로 입 센터에서 벡터로 얼굴의 회전을 정의할 수 있습니다.For example, you can define the rotation of the face as a vector from the center of the mouth to the center of the eyes. 다음 코드에서는이 벡터를 계산합니다.The following code calculates this vector:

var upperLipBottom = landmarks.UpperLipBottom;
var underLipTop = landmarks.UnderLipTop;

var centerOfMouth = new Point(
    (upperLipBottom.X + underLipTop.X) / 2,
    (upperLipBottom.Y + underLipTop.Y) / 2);

var eyeLeftInner = landmarks.EyeLeftInner;
var eyeRightInner = landmarks.EyeRightInner;

var centerOfTwoEyes = new Point(
    (eyeLeftInner.X + eyeRightInner.X) / 2,
    (eyeLeftInner.Y + eyeRightInner.Y) / 2);

Vector faceDirection = new Vector(
    centerOfTwoEyes.X - centerOfMouth.X,
    centerOfTwoEyes.Y - centerOfMouth.Y);

글꼴의 방향을 알고 있는 경우 더 적절히 맞출 사각형 얼굴 프레임을 회전할 수 있습니다.When you know the direction of the face, you can rotate the rectangular face frame to align it more properly. 이미지에서 얼굴을 자르려면 얼굴 항상 수직 표시 되도록 이미지를 프로그래밍 방식으로 회전할 수 있습니다.To crop faces in an image, you can programmatically rotate the image so that the faces always appear upright.

얼굴 특성 가져오기Get face attributes

얼굴 감지 API는 얼굴 사각형 및 랜드마크 외에도 얼굴의 몇 가지 개념적 특성을 분석할 수 있습니다.Besides face rectangles and landmarks, the face detection API can analyze several conceptual attributes of a face. 전체 목록을 보려면 참조는 얼굴 특성 개념 섹션입니다.For a full list, see the Face attributes conceptual section.

얼굴 특성을 분석 하려면 설정 합니다 returnFaceAttributes 매개 변수 목록을 FaceAttributeType 열거형 값입니다.To analyze face attributes, set the returnFaceAttributes parameter to a list of FaceAttributeType Enum values.

var requiredFaceAttributes = new FaceAttributeType[] {
    FaceAttributeType.Age,
    FaceAttributeType.Gender,
    FaceAttributeType.Smile,
    FaceAttributeType.FacialHair,
    FaceAttributeType.HeadPose,
    FaceAttributeType.Glasses,
    FaceAttributeType.Emotion
};
var faces = await faceClient.DetectWithUrlAsync(imageUrl, true, false, requiredFaceAttributes);

그런 다음 반환된 된 데이터에 대 한 참조를 가져와 필요에 따라 더 많은 작업을 수행 합니다.Then, get references to the returned data and do more operations according to your needs.

foreach (var face in faces)
{
    var attributes = face.FaceAttributes;
    var age = attributes.Age;
    var gender = attributes.Gender;
    var smile = attributes.Smile;
    var facialHair = attributes.FacialHair;
    var headPose = attributes.HeadPose;
    var glasses = attributes.Glasses;
    var emotion = attributes.Emotion;
}

각 특성에 대 한 자세한 내용은 참조는 얼굴 감지 및 특성 개념 가이드입니다.To learn more about each of the attributes, see the Face detection and attributes conceptual guide.

다음 단계Next steps

이 가이드에서는 얼굴 감지의 다양 한 기능을 사용 하는 방법을 알아보았습니다.In this guide, you learned how to use the various functionalities of face detection. 다음으로 세부 자습서를 수행 하 여 앱에 이러한 기능을 통합.Next, integrate these features into your app by following an in-depth tutorial.