Веб-камера автоматически захватывает (Emgu.cv) c# - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть проект, в котором при неправильном входе пользователя в систему в форме входа 3 раза веб-камера автоматически начинает захват. Он успешно сохраняет изображение в базе данных, но есть одна ошибка: ссылка на объект не установлена ​​для экземпляра объекта. Я знаю, что есть много вопросов и ответов на это, но я все еще не могу решить это. Другая проблема заключается в том, что, когда я просто отлаживаю форму веб-камеры, она работает без сообщений об ошибках, но при отладке из формы входа появляется ошибка. Другое дело, что она не показывает строку ошибки, но я уверен, что она где-то здесь:

private void webcam_Load(object sender, EventArgs e)
       {

           if ((imagecapture == null))
           {
               try
               {
                   imagecapture = new Emgu.CV.VideoCapture();
               }
               catch (Exception ex)
               {
                   MessageBox.Show(ex.Message);
               }

           }
           Application.Idle += new EventHandler(loadimage);
       }

, и это loadimage ()

public void loadimage(object sender, EventArgs e)
       {
           try
           {
               Emgu.CV.Mat imageviewer = this.imagecapture.QueryFrame();
               pictureBox1.Image = imageviewer.Bitmap;

               MemoryStream ms = new MemoryStream();
               pictureBox1.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
               byte[] picture = ms.ToArray();
               connection.Open();
               DateTime dtime = DateTime.Now;

               string qry = "INSERT INTO WebcamPhoto (ImageData,DateAndTime)  VALUES(@ImageData,@dt)";

               //Initialize SqlCommand object for insert.
               SqlCommand cmd = new SqlCommand(qry, connection);

               cmd.Parameters.AddWithValue("@ImageData", picture);
               cmd.Parameters.AddWithValue("@dt", dtime);
               cmd.ExecuteNonQuery();
               connection.Close();
               imagecapture.Dispose();

               //Close form and return to list or images.
               this.Close();
           }
           catch (NullReferenceException ex)
           {
               MessageBox.Show(ex.Message);
           }
       }

I попытался поставить возврат и сообщение об ошибке исчезло, но изображение не сохраняется в базе данных, даже если веб-камера работает.

private void webcam_Load(object sender, EventArgs e)
       {

           if ((imagecapture == null))
           {
               try
               {
                   imagecapture = new Emgu.CV.VideoCapture();
               }
               catch (Exception ex)
               {
                   MessageBox.Show(ex.Message);
               }
               return;
           }
           Application.Idle += new EventHandler(loadimage);
       }
...