private static void ProcessFrame(Mat backgroundFrame, int threshold, int erodeIterations, int dilateIterations) { // Find difference between background (first) frame and current frame CvInvoke.AbsDiff(backgroundFrame, rawFrame, diffFrame); // Apply binary threshold to grayscale image (white pixel will mark difference) CvInvoke.CvtColor(diffFrame, grayscaleDiffFrame, ColorConversion.Bgr2Gray); CvInvoke.Threshold(grayscaleDiffFrame, binaryDiffFrame, threshold, 255, ThresholdType.Binary); // Remove noise with opening operation (erosion followed by dilation) CvInvoke.Erode(binaryDiffFrame, denoisedDiffFrame, null, new Point(-1, -1), erodeIterations, BorderType.Default, new MCvScalar(1)); CvInvoke.Dilate(denoisedDiffFrame, denoisedDiffFrame, null, new Point(-1, -1), dilateIterations, BorderType.Default, new MCvScalar(1)); rawFrame.CopyTo(finalFrame); FindPerson.DetectObject(denoisedDiffFrame, finalFrame); }
private void btnEdit_Click(object sender, RoutedEventArgs e) { WindowNewEmployee wnEmployee = new WindowNewEmployee { Title = "Редактирование данных", Owner = this }; PersonDPO perDPO = (PersonDPO)lvEmployee.SelectedValue; PersonDPO tempPerDPO; // временный класс для редактирования if (perDPO != null) { tempPerDPO = perDPO.ShallowCopy(); wnEmployee.DataContext = tempPerDPO; wnEmployee.CbRole.ItemsSource = roles; wnEmployee.CbRole.Text = tempPerDPO.Role; if (wnEmployee.ShowDialog() == true) { // перенос данных из временного класса в класс отображения данных Role r = (Role)wnEmployee.CbRole.SelectedValue; perDPO.Role = r.NameRole; perDPO.FirstName = tempPerDPO.FirstName; perDPO.LastName = tempPerDPO.LastName; perDPO.Birthday = tempPerDPO.Birthday; lvEmployee.ItemsSource = null; lvEmployee.ItemsSource = personsDPO; // перенос данных из класса отображения данных в класс Person FindPerson finder = new FindPerson(perDPO.Id); List <Person> listPerson = vmPerson.ListPerson.ToList(); Person p = listPerson.Find(new Predicate <Person>(finder.PersonPredicate)); p = p.CopyFromPersonDPO(perDPO); } } else { MessageBox.Show("Необходимо выбрать сотрудника для редактированния", "Предупреждение", MessageBoxButton.OK, MessageBoxImage.Warning); } }