コード例 #1
0
        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();
                }
            }
        }