static void ProcessTest(string[] args) { switch (args[0]) { case "1": { var iss = new ImageSoftSimilarity(); //foreach (var file in Directory.GetFiles(@"C:\Users\rollrat\Desktop\새 폴더")) // if (file.EndsWith(".png")) // iss.AppendImage(file); Parallel.ForEach(Directory.GetFiles(@"C:\Users\rollrat\Desktop\새 폴더").Where(x => x.EndsWith(".png")), //new ParallelOptions { MaxDegreeOfParallelism = 2 }, (x) => { iss.AppendImage(x); }); //iss.FindForSoft(ImageSoftSimilarity.MakeSoftHash(@"C:\Users\rollrat\Desktop\새 폴더\1577170523.png"), 20); } break; case "2": { var iss = new ImageSoftSimilarity(); Parallel.ForEach(Directory.GetFiles(@"C:\Users\rollrat\Desktop\새 폴더").Where(x => x.EndsWith(".png") || x.EndsWith(".jpg")), //new ParallelOptions { MaxDegreeOfParallelism = 4 }, x => iss.AppendImage(x)); var clustered = iss.Clustering(); } break; } }
private async void Clustering_Click(object sender, RoutedEventArgs e) { StatusProgress.Visibility = Visibility.Visible; Extends.Post(() => StatusText.Text = $"VP-Tree를 생성하는 중..."); double rate; if (!double.TryParse(MaxRate.Text, out rate)) { MessageBox.Show("클러스터링 최고 역치는 실수여야합니다!", "Gallery Explorer", MessageBoxButton.OK, MessageBoxImage.Error); return; } await Task.Run(() => { var clustered = iss.Clustering(x => { Extends.Post(() => StatusText.Text = $"클러스터링 중 ... [{x.Item1.ToString("#,#")}/{x.Item2.ToString("#,#")}] ({(x.Item1 / (double)x.Item2 * 100.0).ToString("#0.00")} %)"); }, 50, rate); Extends.Post(() => { var vm = ResultList.DataContext as ImageSimilarityDataGridViewModel; vm.Items.Clear(); clustered.Where(x => x.Count >= 2).ToList().ForEach(x => vm.Items.Add(new ImageSimilarityDataGridItemViewModel { 개수 = x.Count.ToString(), 평균_정확도 = x.Max(y => y.Item2).ToString(), results = x })); }); }); StatusProgress.Visibility = Visibility.Collapsed; Extends.Post(() => StatusText.Text = $"클러스터링이 완료되었습니다."); }