コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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);
         }
     }
 }
コード例 #4
0
        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!");
                        }
                    }
                }
            }
        }
コード例 #5
0
        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();
        }