예제 #1
0
 private async void appBarTrainButton_Click(object sender, RoutedEventArgs e)
 {
     if (null != globals.gPersonGroupSelected && globals.gPersonGroupSelected.name.Equals("...") == false)
     {
         await PersonGroupCmds.TrainPersonGroups(globals.gPersonGroupSelected.personGroupId);
     }
     else
     {
         MessageDialog dialog = new MessageDialog("Select a PersonGroup to train", "Training Error");
         await dialog.ShowAsync();
     }
 }
        //private async void AppBarButtonEditPersonGroup_Click(object sender, RoutedEventArgs e)
        //{
        //    if (null != personGroupListView.SelectedItem && !((PersonGroups)personGroupListView.SelectedItem).name.Equals("..."))
        //    {
        //        this.IsEnabled = false;
        //        personGroupProgressRing.IsActive = true;

        //        string response = await PersonGroupCmds.UpdatePersonGroups(globals.gPersonGroupSelected.personGroupId,
        //                                                                   txtPersonGroup.Text,null);

        //        personGroupProgressRing.IsActive = false;
        //        this.IsEnabled = true;
        //    }
        //    else
        //    {
        //        MessageDialog dialog = new MessageDialog("Select an existing person group and change name", "Update Error");
        //        await dialog.ShowAsync();
        //    }

        //    AppBarButtonPersonGroupRefresh_Click(null, null);
        //}

        private async void AppBarButtonDeletePerson_Click(object sender, RoutedEventArgs e)
        {
            //TODO: Delete all Person - Faces - Blobs - Thumbs
            if (null != personGroupListView.SelectedItem)
            {
                this.IsEnabled = false;
                personGroupProgressRing.IsActive = true;

                string response = await PersonGroupCmds.DeletePersonGroups(((PersonGroups)personGroupListView.SelectedItem).personGroupId);

                //delete blob
                CloudBlobDirectory    groupdirectory = HttpHandler.blobContainer.GetDirectoryReference(globals.gPersonGroupSelected.personGroupId);
                BlobContinuationToken token          = null;
                do
                {
                    BlobResultSegment resultSegment = await groupdirectory.ListBlobsSegmentedAsync(token);

                    token = resultSegment.ContinuationToken;

                    foreach (IListBlobItem item in resultSegment.Results)
                    {
                        if (item.GetType() == typeof(CloudBlobDirectory))
                        {
                            CloudBlobDirectory    directory      = (CloudBlobDirectory)item;
                            BlobContinuationToken token2         = null;
                            BlobResultSegment     resultSegment2 = await directory.ListBlobsSegmentedAsync(token2);

                            token2 = resultSegment2.ContinuationToken;

                            foreach (IListBlobItem item2 in resultSegment2.Results)
                            {
                                if (item2.GetType() == typeof(CloudBlockBlob))
                                {
                                    CloudBlockBlob blob = (CloudBlockBlob)item2;
                                    blob.DeleteAsync();
                                }
                                break;
                            }
                        }
                    }
                } while (token != null);

                personGroupProgressRing.IsActive = false;
                this.IsEnabled = true;
            }
            else
            {
                MessageDialog dialog = new MessageDialog("Select a person group to delete!", "Delete Error");
                await dialog.ShowAsync();
            }

            AppBarButtonPersonGroupRefresh_Click(null, null);
        }
        private async void AppBarButtonPersonGroupRefresh_Click(object sender, RoutedEventArgs e)
        {
            this.IsEnabled = false;
            personGroupProgressRing.IsActive = true;

            //appbarEditPersonGroupButton.IsEnabled = false;
            appbarPersonGroupNextButton.IsEnabled   = false;
            appbarDeletePersonGroupButton.IsEnabled = false;

            List <PersonGroups> personGroups = await PersonGroupCmds.ListPersonGroups();

            personGroupListView.ItemsSource = personGroups;
            //personGroupListView.DisplayMemberPath = "name";
            globals.gPersonGroupList = personGroups;

            personGroupProgressRing.IsActive = false;
            this.IsEnabled = true;
        }
        private async void AppBarButtonAddPersonGroup_Click(object sender, RoutedEventArgs e)
        {
            if (null == personGroupListView.SelectedItem || ((PersonGroups)personGroupListView.SelectedItem).name.Equals("..."))
            {
                if (txtPersonGroup.Text.Trim() != "")
                {
                    this.IsEnabled = false;
                    personGroupProgressRing.IsActive = true;

                    string response = await PersonGroupCmds.AddPersonGroups(txtPersonGroup.Text.ToLower().Replace(' ', '_'),
                                                                            txtPersonGroup.Text, null);

                    personGroupProgressRing.IsActive = false;
                    this.IsEnabled = true;
                }
                else
                {
                    MessageDialog dialog = new MessageDialog("Add a name to person group", "Add Error");
                    await dialog.ShowAsync();
                }
            }

            AppBarButtonPersonGroupRefresh_Click(null, null);
        }
예제 #5
0
        //private async Task btnFileQuery_Click()
        //{
        //    StorageFile file = null;
        //    if (webcam.IsInitialized())
        //    {
        //        // Stores current frame from webcam feed in a temporary folder
        //        file = await webcam.CapturePhoto();
        //        FaceQuery(file);
        //    }
        //    else
        //    {
        //        if (!webcam.IsInitialized())
        //        {
        //            // The webcam has not been fully initialized for whatever reason:
        //            Debug.WriteLine("Unable to analyze visitor at door as the camera failed to initlialize properly.");
        //            await speech.Read(SpeechContants.NoCameraMessage);
        //        }
        //    }

        //    FaceQuery(file);
        //    btnFileQuery.IsEnabled = true;
        //}
        private async void FaceQuery(StorageFile file)
        {
            CloudBlockBlob blob         = null;
            string         blobFileName = null;

            if (null != file)
            {
                progressRingMainPage.IsActive = true;
                BitmapImage         bitmapImage = new BitmapImage();
                IRandomAccessStream fileStream  = await file.OpenAsync(FileAccessMode.Read);

                bitmapImage.SetSource(fileStream);

                blobFileName = System.Guid.NewGuid() + "." + file.Name.Split('.').Last <string>();

                await HttpHandler.tempContainer.CreateIfNotExistsAsync();

                BlobContainerPermissions permissions = new BlobContainerPermissions();
                permissions.PublicAccess = BlobContainerPublicAccessType.Blob;
                await HttpHandler.tempContainer.SetPermissionsAsync(permissions);

                blob = HttpHandler.tempContainer.GetBlockBlobReference(blobFileName);
                await blob.DeleteIfExistsAsync();

                await blob.UploadFromFileAsync(file);

                string              uri        = "https://api.projectoxford.ai/face/v1.0/detect?returnFaceId=true";
                string              jsonString = "{\"url\":\"" + HttpHandler.storagePath + "visitors/" + blobFileName + "\"}";
                HttpContent         content    = new StringContent(jsonString, Encoding.UTF8, "application/json");
                HttpResponseMessage response   = await HttpHandler.client.PostAsync(uri, content);

                if (response.IsSuccessStatusCode)
                {
                    string responseBody = await response.Content.ReadAsStringAsync();

                    if (null == globals.gPersonGroupList)
                    {
                        globals.gPersonGroupList = await PersonGroupCmds.ListPersonGroups();
                    }

                    List <string> names = await VisitorCmds.CheckVisitorFace(responseBody, globals.gPersonGroupList);

                    if (0 == names.Count)
                    {
                        await speech.Read(SpeechContants.VisitorNotRecognizedMessage);
                    }
                    else
                    {
                        UnlockDoor(string.Join(", ", names.ToArray()));
                    }
                }
                else
                {
                    string responseBody = await response.Content.ReadAsStringAsync();

                    globals.ShowJsonErrorPopup(responseBody);
                }

                await blob.DeleteAsync();

                progressRingMainPage.IsActive = false;
            }
        }