private void button4_Click(object sender, EventArgs e)
        {
            //image process start (process Button)

            if (this.processButtonFlag)
            {
                CascadeClassifier haarCascadeClassifier = new CascadeClassifier(@"C:\Users\user\Dataset\wider_face_yolo\benchmark\tester\C#\TraningProgramming\Xisom.FaceDetection\FaceDetector.OpenCvSharp\Resources\haarcascade_frontalface_default.xml");
                // adding all filelist to to the datagridview
                List <Rect> faceList = new List <Rect>();
                var         src      = new Mat(this.fileList[this.imageID], ImreadModes.Grayscale);
                var         dst      = new Mat(this.fileList[this.imageID], ImreadModes.Color);
                Rect[]      faces    = haarCascadeClassifier.DetectMultiScale(src, 1.1, 5);

                if (faces.Length > 0)
                {
                    for (int i = 0; i < faces.Length; i++)
                    {
                        faceList.Add(faces[i]);
                        Cv2.Rectangle(dst, faces[i], Scalar.White, 3);
                    }
                }

                this.image               = BitmapConverter.ToBitmap(dst);
                pictureBox1.Image        = (Image)image;
                pictureBox1.SizeMode     = PictureBoxSizeMode.StretchImage;
                this.processedListedface = new ListedFaces(faceList);

                //datagridview add and parse to dataset;

                DataRow dataRow = this.gridDataTable.NewRow();
                dataRow["ID"] = this.imageID.ToString();
                dataRow["File Information"] = this.fileList[this.imageID].ToString();
                dataRow["Face(s)"]          = (this.processedListedface.SerializeObject());

                this.gridDataTable.Rows.Add(dataRow);

                dataGridView1.AutoSize   = true;
                dataGridView1.DataSource = this.gridDataset.Tables[0];

                this.processButtonFlag = false;
                if (!this.hasProcessed)
                {
                    this.hasProcessed = true;
                }
                saveButton.Visible = true;
            }
        }
        public ImageDisplay(string filename, ListedFaces listedFaces)
        {
            InitializeComponent();
            this.listedFaces = listedFaces;
            this.filename    = filename;

            var dst = new Mat(this.filename, ImreadModes.Color);

            for (int i = 0; i < listedFaces.faces.Count; i++)
            {
                Cv2.Rectangle(dst, listedFaces.faces[i], Scalar.White, 3);
            }

            this.image = BitmapConverter.ToBitmap(dst);
            displayPictureBox.Image    = (Image)image;
            displayPictureBox.SizeMode = PictureBoxSizeMode.StretchImage;
            fileNameLabel.Text         = this.filename;
        }
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            // showing the data as a new form
            DataGridView dgv = sender as DataGridView;

            if (dgv != null)
            {
                this.fileName = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();
                this.imageID  = int.Parse(dataGridView1.SelectedRows[0].Cells[0].Value.ToString());
                this.image    = new Bitmap(this.fileList[imageID]);
                var dst = new Mat(this.fileList[this.imageID], ImreadModes.Color);

                XmlSerializer reader   = new XmlSerializer(typeof(ListedFaces));
                string        faceData = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();

                ListedFaces listedFaces = (ListedFaces)reader.Deserialize(new StringReader(faceData));

                try
                {
                    this.processedListedface = listedFaces;
                    for (int i = 0; i < listedFaces.faces.Count; i++)
                    {
                        Cv2.Rectangle(dst, listedFaces.faces[i], Scalar.White, 3);
                    }

                    this.image           = BitmapConverter.ToBitmap(dst);
                    pictureBox1.Image    = (Image)image;
                    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                }
                catch
                {
                    MessageBox.Show("image File not found");
                }
                progressBar1.Value = this.imageID;
                label3.Text        = "Image Count " + this.imageID;

                Form imagedisplay = new ImageDisplay(this.fileName, listedFaces);
                imagedisplay.Show();
            }
        }
        private void autoProcess_Click(object sender, EventArgs e)
        {
            autoProcess.Visible       = false;
            pauseButton.Visible       = true;
            this.autoPlayButtonActive = true;
            this.pressPauseButton     = false;;
            processButton.Visible     = false;
            saveButton.Visible        = false;


            for (int k = 0; k < this.fileList.Length; k++)
            {
                this.imageID = k;
                if (this.pressPauseButton)
                {
                    this.autoPlayButtonActive = false;
                    this.autoProcessIdx       = k;
                    break;
                }
                if (this.autoProcessIdx != 0)
                {
                    k = autoProcessIdx;
                }
                CascadeClassifier haarCascadeClassifier = new CascadeClassifier(@"C:\Users\user\Dataset\wider_face_yolo\benchmark\tester\C#\TraningProgramming\Xisom.FaceDetection\FaceDetector.OpenCvSharp\Resources\haarcascade_frontalface_default.xml");
                // adding all filelist to to the datagridview
                List <Rect> faceList = new List <Rect>();
                var         src      = new Mat(this.fileList[this.imageID], ImreadModes.Grayscale);
                var         dst      = new Mat(this.fileList[this.imageID], ImreadModes.Color);
                Rect[]      faces    = haarCascadeClassifier.DetectMultiScale(src, 1.1, 5);

                if (faces.Length > 0)
                {
                    for (int i = 0; i < faces.Length; i++)
                    {
                        faceList.Add(faces[i]);
                        Cv2.Rectangle(dst, faces[i], Scalar.White, 3);
                    }
                }

                this.image               = BitmapConverter.ToBitmap(dst);
                pictureBox1.Image        = (Image)image;
                pictureBox1.SizeMode     = PictureBoxSizeMode.StretchImage;
                this.processedListedface = new ListedFaces(faceList);
                progressBar1.Value       = this.imageID;
                //datagridview add and parse to dataset;

                DataRow dataRow = this.gridDataTable.NewRow();
                dataRow["ID"] = this.imageID.ToString();
                dataRow["File Information"] = this.fileList[this.imageID].ToString();
                dataRow["Face(s)"]          = (this.processedListedface.SerializeObject());
                this.gridDataTable.Rows.Add(dataRow);
                label3.Text = "Image Count: " + this.imageID;
                Thread.Sleep(300);
                if (this.autoPlayButtonActive)
                {
                    //impliment todo??
                }
            }



            dataGridView1.DataSource = this.gridDataset.Tables[0];

            this.processButtonFlag = true;
            saveButton.Visible     = true;
            autoProcess.Visible    = true;
            this.pressPauseButton  = false;
            processButton.Visible  = true;
        }