コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }