コード例 #1
0
        /// <summary>
        /// Identifies person from temporary image taken from App
        /// </summary>
        /// <returns>Name of identified person</returns>
        public async Task <string> Identify(string name)
        {
            var    azureBlobHelper = new AzureBlobHelper();
            string takenImageUri   = null;

            takenImageUri = azureBlobHelper.GetImageUri(name);
            if (takenImageUri == null)
            {
                throw new ManagerException(RecognitionErrorMessages.WrongUriError);
            }

            var memoryStream = new MemoryStream();

            memoryStream = RecUtil.GetStreamFromUri(takenImageUri);

            var faces = await _faceServiceClient.DetectAsync(memoryStream);

            if (faces.Length == 0 || faces == null)
            {
                throw new ManagerException(RecognitionErrorMessages.NoFacesFoundError);
            }

            var faceIds = faces.Select(face => face.FaceId).ToArray();

            var results = await _faceServiceClient.IdentifyAsync(_groupId, faceIds);

            if (results.Length == 0 || results == null || results[0].Candidates.Length == 0 || results[0].Candidates[0] == null)
            {
                throw new ManagerException(RecognitionErrorMessages.NoOneIdentifiedError);
            }

            var candidateId = results[0].Candidates[0].PersonId;
            var person      = await _faceServiceClient.GetPersonAsync(_groupId, candidateId);

            azureBlobHelper.DeletePhoto(name);

            return(person.Name);
        }