void JpegStreamNewFrame(object sender, NewFrameEventArgs eventArgs) { if (!_resized) { if (_displayControl != null) { _displayControl.Invalidate(); } this.LiveViewResized(null); _resized = true; } LastImage = eventArgs.Frame; if (_motionFramesQueue.Count > MotionQueueSize) { return; } var bmp = AForge.Imaging.Image.Clone(eventArgs.Frame); OpenCvSharp.IplImage ipl = null; try { ipl = OpenCvSharp.IplImage.FromBitmap(bmp); } catch (Exception) { return; } finally { if (bmp != null) { bmp.Dispose(); } } var frame = new Frame(ipl); var grouped = _motionDetector.ProcessFrame(frame); if (grouped) { var motionFrames = _motionDetector.GetMotionFrames(); if (motionFrames != null) { foreach (var motionFrame in motionFrames) { motionFrame.DeviceId = _cameraInfo.Id; } SaveMotionFrames(motionFrames); _motionFramesQueue.Enqueue(motionFrames); _signal.Set(); } } }