예제 #1
0
        public static FaceAnalysisResult MapToDomain(this Microsoft.ProjectOxford.Face.Contract.Face[] faces)
        {
            var domainEntity = new FaceAnalysisResult()
            {
                Faces = faces.Select(MapToDomain).ToList(),
            };

            return(domainEntity);
        }
예제 #2
0
        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);
        }