У меня есть проект, в котором при неправильном входе пользователя в систему в форме входа 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);
}