예제 #1
0
        /// <summary>
        /// Inserts new image
        /// </summary>
        /// <param name="user"></param>
        /// <returns>boolean</returns>
        public async Task <bool> InsertPersonInToGroup(UserModel user)
        {
            CreatePersonResult result = await _faceServiceClient.CreatePersonAsync(_groupId, user.Id.ToString());

            //Mock error heandling
            if (result == null)
            {
                return(false);
            }

            RecognitionUtils recUtils = new RecognitionUtils();

            await _faceServiceClient.AddPersonFaceAsync(_groupId, result.PersonId, recUtils.GetStream(user.ImageUri));

            await _faceServiceClient.TrainPersonGroupAsync(_groupId);

            return(true);
        }
예제 #2
0
        /// <summary>
        /// Identifies person from an image taken in the app
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public async Task <string> Identify(UserModel user)
        {
            string imageUri = user.ImageUri;

            //Mock error heandling
            if (imageUri == null)
            {
                return(null);
            }

            RecognitionUtils recUtils = new RecognitionUtils();

            var memoryStream = new MemoryStream();

            memoryStream = recUtils.GetStream(imageUri);

            var faces = await _faceServiceClient.DetectAsync(memoryStream);

            //Mock error heandling
            if (faces.Length == 0 || faces == null)
            {
                return(null);
            }

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

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

            //Mock error heandling
            if (results.Length == 0 || results == null || results[0].Candidates.Length == 0 || results[0].Candidates[0] == null)
            {
                return(null);
            }

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

            return(person.Name);
        }
예제 #3
0
        public void GetStream_ShouldReturnExpected()
        {
            //Arrange
            byte[] fakeBytes             = new byte[1000];
            var    fakeWebClientFacttory = A.Fake <ICustomWebClientFactory>();
            var    fakeWebClient         = fakeWebClientFacttory.Create();

            A.CallTo(() => fakeWebClient.DownloadData("https://static.tvtropes.org/pmwiki/pub/images/young_joseph_joestar_anime.png")).Returns(fakeBytes);

            //Act
            var recognitionUtils = new RecognitionUtils()
            {
                CustomWebClient = fakeWebClient
            };
            var result = recognitionUtils.GetStream("https://static.tvtropes.org/pmwiki/pub/images/young_joseph_joestar_anime.png");

            //Assert
            var resultBytes = result.ToArray();

            resultBytes.ShouldBe(fakeBytes);

            A.CallTo(() => fakeWebClient.DownloadData("https://static.tvtropes.org/pmwiki/pub/images/young_joseph_joestar_anime.png")).MustHaveHappenedOnceExactly();
        }