Face detection-gegevens ophalenGet face detection data

Deze handleiding wordt gedemonstreerd hoe u gezichtsherkenning kunt kenmerken, zoals geslacht, leeftijd of houding onttrekken aan een bepaalde installatiekopie.This guide will demonstrate how to use face detection to extract attributes like gender, age, or pose from a given image. De codefragmenten in deze handleiding zijn geschreven in C# met behulp van de Face-API-clientbibliotheek, maar dezelfde functionaliteit is beschikbaar via de REST-API.The code snippets in this guide are written in C# using the Face API client library, but the same functionality is available through the REST API.

Deze handleiding leert u hoe aan:This guide will show you how to:

  • Verkrijg de locaties en dimensies van gezichten wordt uitgevoerd in een afbeelding.Get the locations and dimensions of faces in an image.
  • De locaties van verschillende gezichtsoriëntatiepunten (leerlingen, nose, mond vandaan te houden, enzovoort) in een afbeelding ophalen.Get the locations of various face landmarks (pupils, nose, mouth, and so on) in an image.
  • Het geslacht, leeftijd, en emoties en andere kenmerken van een gedetecteerde gezicht raden.Guess the gender, age, and emotion, and other attributes of a detected face.

InstellenSetup

Deze handleiding wordt ervan uitgegaan dat u al hebt gemaakt een FaceClient -object, met de naam faceClient, met een sleutel en het eindpunt-URL voor de abonnementen voor Face.This guide assumes you have already constructed a FaceClient object, named faceClient, with a Face subscription key and endpoint URL. Hier kunt u de face detection-functie kunt gebruiken door het aanroepen van een DetectWithUrlAsync (gebruikt in deze handleiding) of DetectWithStreamAsync.From here, you can use the face detection feature by calling either DetectWithUrlAsync (used in this guide) or DetectWithStreamAsync. Zie de Snelstartgids voor het detecteren van gezichten C# voor instructies over hoe u dit instellen.See the Detect Faces quickstart for C# for instructions on how to set this up.

Deze handleiding wordt de nadruk gelegd op de details van de analyse-aanroep—welke argumenten die u kunt doorgeven en wat u kunt doen met de geretourneerde gegevens.This guide will focus on the specifics of the Detect call—what arguments you can pass and what you can do with the returned data. Het is raadzaam om alleen query's uitvoeren voor de functies die u nodig hebt, omdat elke bewerking meer tijd neemt in beslag.We recommend only querying for the features you need, as each operation takes additional time to complete.

Basic face gegevens ophalenGet basic face data

Als u wilt zoeken gezichten en hun locaties in een afbeelding ophalen, roept u de methode met de returnFaceId parameter ingesteld op waar (standaard).To find faces and get their locations in an image, call the method with the returnFaceId parameter set to true (default).

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

De geretourneerde DetectedFace objecten kunnen worden opgevraagd voor de unieke id's en een rechthoek waarmee de pixelcoördinaten van het gezicht.The returned DetectedFace objects can be queried for their unique IDs and a rectangle which gives the pixel coordinates of the face.

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

Zie FaceRectangle voor meer informatie over het parseren van de locatie en de afmetingen van het gezicht.See FaceRectangle for information on how to parse the location and dimensions of the face. Normaal gesproken bevat deze rechthoek de ogen, eyebrows, nose en mond; de bovenkant van de hoofd-, klinken en chin zijn niet noodzakelijkerwijs opgenomen.Usually, this rectangle contains the eyes, eyebrows, nose, and mouth; the top of head, ears, and chin are not necessarily included. Als u van plan bent met het gezichtsrechthoek bijsnijden een volledige hoofd- of halverwege shot Staand (een foto-ID-type afbeelding), kunt u om uit te breiden, de rechthoek met een bepaalde marge in elke richting.If you intend to use the face rectangle to crop a complete head or mid-shot portrait (a photo ID type image), you may want to expand the rectangle by a certain margin in each direction.

Gezichtsoriëntatiepunten ophalenGet face landmarks

Gezichtsoriëntatiepunten zijn een verzameling van punten op een gezicht, zoals de leerlingen gemakkelijk te vinden of de punt van nose.Face landmarks are a set of easy-to-find points on a face such as the pupils or the tip of nose. U kunt face oriëntatiepunt gegevens ophalen door in te stellen de returnFaceLandmarks parameter waar.You can get face landmark data by setting the returnFaceLandmarks parameter to true.

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

Standaard zijn er 27 oriëntatiepunten vooraf gedefinieerde punten.By default, there are 27 predefined landmark points. De volgende afbeelding ziet u alle 27 punten:The following figure shows all 27 points:

Een diagram face met alle 27 oriëntatiepunten gelabeld

De punten die wordt geretourneerd, zijn in eenheden van pixels, net als bij het kader van de rechthoek face.The points returned are in units of pixels, just like the face rectangle frame. De volgende code ziet u hoe u de locaties van de nose en leerlingen mogelijk ophalen: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;
}

Face oriëntatiepunten gegevens kunnen ook worden gebruikt voor een nauwkeurige berekening van de richting van het gezicht.Face landmarks data can also be used to accurately calculate the direction of the face. We kunnen bijvoorbeeld de rotatie van de face definiëren als een vector uit het midden van de bek in het midden van de ogen.For example, we can define the rotation of the face as a vector from the center of the mouth to the center of the eyes. De onderstaande code berekent deze vector:The code below 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);

De richting van het gezicht weet, kunt u vervolgens draaien het frame rechthoekige face meer uitlijnen.Knowing the direction of the face, you can then rotate the rectangular face frame to align it more properly. Als u gezichten in een afbeelding bijsnijden wilt, kunt u de installatiekopie via een programma draaien zodat de gezichten altijd wordt weergegeven.If you want to crop faces in an image, you can programmatically rotate the image so that the faces always appear upright.

Face kenmerken ophalenGet face attributes

De face detection-API kunt verschillende algemene kenmerken van een gezicht analyseren naast gezichtsrechthoeken en monumenten.Besides face rectangles and landmarks, the face detection API can analyze several conceptual attributes of a face. Deze omvatten:These include:

  • LeeftijdAge
  • GeslachtGender
  • Glimlach-intensiteitSmile intensity
  • GezichtshaarFacial hair
  • BrilGlasses
  • 3D-head houding3D head pose
  • EmotionEmotion

Belangrijk

Deze kenmerken worden voorspeld door het gebruik van statistische algoritmen en altijd mogelijk niet in nauwkeurig.These attributes are predicted through the use of statistical algorithms and may not always be accurate. Wees voorzichtig bij het nemen van besluiten op basis van kenmerkgegevens.Use caution when making decisions based on attribute data.

Voor het analyseren van de face-kenmerken instellen de returnFaceAttributes parameter voor een lijst met FaceAttributeType Enum waarden.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);

Vervolgens ophalen van verwijzingen naar de geretourneerde gegevens en verder doen operations op basis van uw behoeften.Then, get references to the returned data and do further 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;
}

Raadpleeg voor meer informatie over elk van de kenmerken van de verklarende woordenlijst.To learn more about each of the attributes, refer to the Glossary.

Volgende stappenNext steps

In deze handleiding hebt u geleerd hoe u de verschillende functies van gezichtsdetectie.In this guide you learned how to use the various functionalities of face detection. Hieronder staan de verklarende woordenlijst voor een meer gedetailleerde Kijk op de face-gegevens die u hebt opgehaald.Next, see the Glossary for a more detailed look at the face data you've retrieved.