private void InitializeStoredFrame() { stopwatch.Reset(); stopwatch.Start(); camera.Retrieve(storedFrame, 0); CvInvoke.CvtColor(storedFrame, storedFrame, ColorConversion.Bgr2Gray); OneSecondIntervalPictureBox.Invoke(new MethodInvoker(delegate() { OneSecondIntervalPictureBox.Image = storedFrame.Bitmap; })); maxIntensityPerIteration = 0; }
private void ProcessFrame(object sender, EventArgs e) { if (camera != null && camera.Ptr != IntPtr.Zero) { camera.Retrieve(frame, 0); if (storedFrame.Bitmap == null) { InitializeStoredFrame(); } CvInvoke.CvtColor(frame, frame, ColorConversion.Bgr2Gray); DefaultCameraPictureBox.Invoke(new MethodInvoker(delegate() { DefaultCameraPictureBox.Image = frame.Bitmap; })); //It has been timeperstoredupdateinmilliseconds milliseconds if (stopwatch.ElapsedMilliseconds > timePerStoredUpdateInMilliseconds) { stopwatch.Reset(); stopwatch.Start(); camera.Retrieve(storedFrame, 0); CvInvoke.CvtColor(storedFrame, storedFrame, ColorConversion.Bgr2Gray); OneSecondIntervalPictureBox.Invoke(new MethodInvoker(delegate() { OneSecondIntervalPictureBox.Image = storedFrame.Bitmap; })); maxIntensityPerIteration = 0; } Image <Gray, byte> diff = new Image <Gray, byte>(frame.Bitmap); diff = diff.AbsDiff(new Image <Gray, byte>(storedFrame.Bitmap)); diff = diff.Erode(2); intensityContainer.Add(diff.GetAverage().Intensity); if (!isRecording && intensityContainer.GetAverage() > intensityToTriggerRecording) { InitializeRecording(); isRecording = true; if (!emailStopwatch.IsRunning) { SendWarningEmail(); } emailStopwatch.Reset(); } else if (isRecording && intensityContainer.GetAverage() < intensityToTriggerRecording / 2) { DisableRecordingAndSaveVideo(); isRecording = false; emailStopwatch.Start(); } textBox1.Invoke(new MethodInvoker(delegate() { if (diff.GetAverage().Intensity > maxIntensityPerIteration) { maxIntensityPerIteration = diff.GetAverage().Intensity; textBox1.Text = diff.GetAverage().Intensity.ToString(); } IntensityContainerAverageTextBox.Text = intensityContainer.GetAverage().ToString(); })); DifferencePictureBox.Invoke(new MethodInvoker(delegate() { DifferencePictureBox.Image = diff.Bitmap; })); //Handle emails if (emailStopwatch.ElapsedMilliseconds > timeToCollectBeforeEmailInMilliseconds) { SendWarningEmail(true); fileNames.Clear(); emailStopwatch.Reset(); } } }