private void BtnSkip_Click(object sender, RoutedEventArgs e) { Button button = sender as Button; RecognitionModel model = button.Tag as RecognitionModel; PV_Recognizer.Train(model, "Unknown"); icImages.ItemsSource = PeopleImage.Where(x => x.Processed == false); }
private void BtnSave_Click(object sender, RoutedEventArgs e) { Button button = sender as Button; RecognitionModel model = button.Tag as RecognitionModel; TextBox textBox = (button.Parent as DockPanel).Children.OfType <TextBox>().FirstOrDefault(); string name = textBox.Text; PV_Recognizer.Train(model, name); icImages.ItemsSource = PeopleImage.Where(x => x.Processed == false); }
private void _this_Closing(object sender, CancelEventArgs e) { PV_Recognizer.Save(); Setting.Current.Save(); using (StreamWriter writer = new StreamWriter("favorite.txt", false)) { foreach (String s in FavoriteFolders) { writer.WriteLine(s); } } }
private void Worker_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker worker = (BackgroundWorker)sender; List <string> checked_file = new List <string>(); using (StreamReader reader = new StreamReader(new BufferedStream(new FileStream("checked_file.txt", FileMode.OpenOrCreate, FileAccess.Read), 512))) { while (!reader.EndOfStream) { checked_file.Add(reader.ReadLine()); } } using (StreamWriter writer = new StreamWriter(new BufferedStream(new FileStream("checked_file.txt", FileMode.Append, FileAccess.Write), 512))) { int i = PV_Recognizer.training_sets.Count; //while (!worker.CancellationPending) { //System.Threading.Thread.Sleep(2000); IEnumerable <FileInfo> files = FavoriteFolders.SelectMany(x => (new DirectoryInfo(x).GetFilesByExtensions(".jpg", ".bmp", ".png"))) .Where(x => !checked_file.Contains(x.FullName) && x.Length < 10000000); foreach (FileInfo f in files) { List <RecognitionModel> result = (PV_Recognizer.Recognize(new UMat(f.FullName, ImreadModes.Color), f.FullName)); writer.WriteLine(f.FullName); //foreach (RecognitionModel rm in result) PeopleImage.Add(rm); worker.ReportProgress(0, result); while ((PV_Recognizer.training_sets.Where(x => (!x.Processed)).Count() > 15) && !worker.CancellationPending) { System.Threading.Thread.Sleep(2000); } ; if (PV_Recognizer.training_sets.Count - i > 30) { Console.WriteLine("Re-training recognizer...."); IEnumerable <RecognitionModel> arr = PV_Recognizer.training_sets.Where(x => x.Processed); PV_Recognizer.Recognizer.Train <Gray, byte>(arr.Select(x => x.FaceImageCV).ToArray(), arr.Select(x => x.LabelInt).ToArray()); i = PV_Recognizer.training_sets.Count; Console.WriteLine("Training completed!"); } } } } }
private async void InitRecognizer() { PeopleImage = new ObservableCollection <RecognitionModel>(await PV_Recognizer.InitAsync()); //People = new ObservableCollection<String>(); List <string> names = PV_Recognizer.GetNames(); foreach (string name in names) { People.Add(name); } RecognizerWorker = new BackgroundWorker { WorkerReportsProgress = true, WorkerSupportsCancellation = true }; RecognizerWorker.DoWork += Worker_DoWork; RecognizerWorker.ProgressChanged += Worker_ProgressChanged; RecognizerWorker.RunWorkerAsync(); //Recognize(); }