public static FaceAnalysisResult MapToDomain(this Microsoft.ProjectOxford.Face.Contract.Face[] faces) { var domainEntity = new FaceAnalysisResult() { Faces = faces.Select(MapToDomain).ToList(), }; return(domainEntity); }
public async Task <FaceAnalysisResult> AnalyzeFacesFromLocalFileAsync(string localFilePath) { var analysisResult = new FaceAnalysisResult(); // Call the Face API. try { Console.WriteLine("\t\t\tContentAnalyzer.AnalyzeFacesFromLocalFileAsync(): initializing FaceAPI client"); IFaceServiceClient faceServiceClient = new FaceServiceClient(m_FaceAPISubscriptionKey, "https://westeurope.api.cognitive.microsoft.com/face/v1.0"); Console.WriteLine("\t\t\tContentAnalyzer.AnalyzeFacesFromLocalFileAsync(): starting analysis"); using (Stream imageFileStream = File.OpenRead(localFilePath)) { // The list of Face attributes to return. IEnumerable <FaceAttributeType> faceAttributes = new FaceAttributeType[] { FaceAttributeType.Gender, FaceAttributeType.Age, FaceAttributeType.Smile, FaceAttributeType.Emotion, FaceAttributeType.Glasses, FaceAttributeType.FacialHair, FaceAttributeType.HeadPose }; var faces = await faceServiceClient.DetectAsync(imageFileStream, returnFaceId : true, returnFaceLandmarks : false, returnFaceAttributes : faceAttributes); Console.WriteLine($"\t\t\tContentAnalyzer.AnalyzeFacesFromLocalFileAsync(): analysis completed. Detected {faces.Length} face(s)"); // Mapping FaceAPI Client entity to domain entity analysisResult = faces.MapToDomain(); } } // Catch and display Face API errors. catch (FaceAPIException fex) { Console.WriteLine($"\t\t\tContentAnalyzer.AnalyzeFacesFromLocalFileAsync(): an error occured while analyzing picture - {fex.Message}"); } // Catch and display all other errors. catch (Exception ex) { Console.WriteLine($"\t\t\tContentAnalyzer.AnalyzeFacesFromLocalFileAsync(): a generic error occured while analyzing picture - {ex.Message}"); } return(analysisResult); }