예제 #1
0
 private async void OnTagSelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (this.projectTagsListView.SelectedValue != null)
     {
         this.SelectedTag = this.projectTagsListView.SelectedValue as ImageTagModel;
         await this.LoadTagImagesFromService();
     }
     else
     {
         this.SelectedTagImages.Clear();
     }
 }
예제 #2
0
        private async Task CreateTagAsync(string name)
        {
            try
            {
                ImageTagModel result = await trainingApi.CreateTagAsync(this.CurrentProject.Id, name);

                this.TagsInCurrentGroup.Add(result);
                this.needsTraining = true;
                this.DismissFlyout();
            }
            catch (Exception e)
            {
                await Util.GenericApiCallExceptionHandler(e, "Failure creating tag");
            }
        }
        private async void UploadButton_Click(object sender, RoutedEventArgs e)
        {
            if (urls.Count > 0)
            {
                ImageUrlCreateBatch createBatch   = new ImageUrlCreateBatch();
                ImageTagModel       imageTagModel = (ImageTagModel)tagsComboBox.SelectedItem;
                createBatch.TagIds = new List <Guid> {
                    imageTagModel.Id
                };
                createBatch.Urls = urls;
                await MainWindow.currentWindow.UploadOnlineImage(projectId, createBatch);

                ProjectPage projectPage = (ProjectPage)MainWindow.currentWindow.mainFrame.Content;
                projectPage.RefreshTags();
                Window.GetWindow(this).Close();
            }
        }
예제 #4
0
        private void UploadButton_Click(object sender, RoutedEventArgs e)
        {
            string[]      fileNames     = (string[])ImageListBox.ItemsSource;
            Task[]        tasks         = new Task[fileNames.Length];
            ImageTagModel imageTagModel = (ImageTagModel)tagsComboBox.SelectedItem;

            for (int i = 0; i < fileNames.Length; i++)
            {
                FileStream fileStream = File.Open(fileNames[i], FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                tasks[i] = MainWindow.currentWindow.UploadImage(projectId, fileStream, new List <string> {
                    imageTagModel.Id.ToString()
                });
            }
            Task.WaitAll(tasks);
            ProjectPage projectPage = (ProjectPage)MainWindow.currentWindow.mainFrame.Content;

            projectPage.RefreshTags();
            Window.GetWindow(this).Close();
        }
        private void TagListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ImageTagModel imageTagModel = (ImageTagModel)TagListView.SelectedItem;

            if (imageTagModel != null)
            {
                List <string> imageTagList = new List <string>();
                imageTagList.Add(imageTagModel.Id.ToString());
                int take = imageTagModel.ImageCount;
                if (take > 0)
                {
                    List <ImageModel> imageList = MainWindow.currentWindow.GetTaggedImages(projectId, imageTagList, take);
                    ImageListBox.ItemsSource = imageList;
                }
                else
                {
                    ImageListBox.ItemsSource = new List <ImageModel>();
                }
            }
        }
예제 #6
0
        private void ConfirmButton_Click(object sender, RoutedEventArgs e)
        {
            if (String.IsNullOrEmpty(tagNameTextBox.Text))
            {
                tipTextBlock.Text = "请输入Tag Name";
                return;
            }
            try
            {
                ImageTagModel tagModel = MainWindow.currentWindow.NewTag(page.GetProjectId(), tagNameTextBox.Text);
            }
            catch
            {
                tipTextBlock.Text = "新增Tag失败,检查是否已经存在该Tag";
                return;
            }

            page.RefreshTags();
            this.Close();
        }
예제 #7
0
        public static async Task <HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestMessage req, TraceWriter log)
        {
            try
            {
                var allTags     = new List <string>();
                var json        = req.Content.ReadAsStringAsync().Result;
                var jobj        = JObject.Parse(json);
                var tags        = (JArray)jobj["tags"];
                var term        = jobj["term"].ToString();
                var projectId   = jobj["projectId"].ToString();
                var trainingKey = jobj["trainingKey"].ToString();
                var offset      = 0;

                if (jobj["offset"] != null)
                {
                    offset = (int)jobj["offset"];
                }

                var imageUrls = await SearchForImages(term, offset);

                var api     = new TrainingApi(new TrainingApiCredentials(trainingKey));
                var project = api.GetProject(Guid.Parse(projectId));

                var tagModels    = new List <ImageTagModel>();
                var existingTags = api.GetTags(project.Id);
                foreach (string tag in tags)
                {
                    ImageTagModel model = existingTags.Tags.SingleOrDefault(t => t.Name == tag);

                    if (model == null)
                    {
                        model = api.CreateTag(project.Id, tag.Trim());
                    }

                    tagModels.Add(model);
                }

                var batch   = new ImageUrlCreateBatch(tagModels.Select(m => m.Id).ToList(), imageUrls);
                var summary = api.CreateImagesFromUrls(project.Id, batch);

                //if(!summary.IsBatchSuccessful)
                //	return req.CreateErrorResponse(HttpStatusCode.BadRequest, "Image batch was unsuccessful");

                //Traing the classifier and generate a new iteration, that we'll set as the default
                var iteration = api.TrainProject(project.Id);

                while (iteration.Status == "Training")
                {
                    Thread.Sleep(1000);
                    iteration = api.GetIteration(project.Id, iteration.Id);
                }

                iteration.IsDefault = true;
                api.UpdateIteration(project.Id, iteration.Id, iteration);

                return(req.CreateResponse(HttpStatusCode.OK, iteration.Id));
            }
            catch (Exception e)
            {
                var exception = e.GetBaseException();
                return(req.CreateErrorResponse(HttpStatusCode.BadRequest, exception.Message));
            }

            async Task <List <string> > SearchForImages(string term, int offset)
            {
                var client = new HttpClient();

                client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "c2adf0e5c057447ea9e0f50cc5202251");
                var uri = $"https://api.cognitive.microsoft.com/bing/v7.0/images/search?count=50&q={term}&offset={offset}";

                var json = await client.GetStringAsync(uri);

                var jobj = JObject.Parse(json);
                var arr  = (JArray)jobj["value"];

                var list = new List <string>();

                foreach (var result in arr)
                {
                    list.Add(result["contentUrl"].ToString());
                }

                return(list);
            }
        }