コード例 #1
0
        public void Record(RgbImageData imageData)
        {
            if (!_recorders.Any(kvp => Equals(kvp.Key.Key, imageData.Key)))
            {
                //var width = imageData.Image.Width;
                //var height = imageData.Image.Height;
                //var filename = string.Format("{0}_{1}_{2}x{3}_{4}.avi", Filename, imageData.Key, width, height, Fps);

                var videoMetadata = new VideoMetadata
                {
                    Key      = imageData.Key,
                    FileName = string.Format("{0}{1}", imageData.Key, ".avi"),
                    Width    = imageData.Image.Width,
                    Height   = imageData.Image.Height,
                    Fps      = Fps
                };

                //VideoWriter captureOutput = new VideoWriter(@"test.avi", -1, 1, width, height, true);
                //var captureOutput = new VideoWriter(@"test.avi", CvInvoke.CV_FOURCC('W', 'M', 'V', '3'), 1, width, height, true);
                var videoWriter = new VideoWriter(
                    GetTempFilePath(_tmpRecordPath, videoMetadata.FileName),
                    CvInvoke.CV_FOURCC('D', 'I', 'V', 'X'),
                    Fps,
                    videoMetadata.Width,
                    videoMetadata.Height,
                    true);

                _recorders.Add(videoMetadata, videoWriter);

                _isRecorderStarted = true;
            }

            if (!_isRecorderStarted)
            {
                return;
            }

            // TODO: The _recorders.Single may raise an exception if sequence is empty or multiple items in sequence match
            var recorder = _recorders.Single(kvp => Equals(kvp.Key.Key, imageData.Key)).Value;

            //_recorder = new VideoWriter(Filename, 10, 320, 240, true);
            if (recorder != null)
            {
                Image <Rgb, byte> imageCopy = null;
                try
                {
                    Console.WriteLine("Write image frame");
                    imageCopy = imageData.Image;
                    recorder.WriteFrame(imageCopy.Convert <Bgr, byte>());
                }
                finally
                {
                    if (imageCopy != null)
                    {
                        imageCopy.Dispose();
                    }
                }
            }
        }
コード例 #2
0
        public void Record(RgbImageData imageData)
        {
            if (!_recorders.Any(kvp => Equals(kvp.Key.Key, imageData.Key)))
            {
                //var width = imageData.Image.Width;
                //var height = imageData.Image.Height;
                //var filename = string.Format("{0}_{1}_{2}x{3}_{4}.avi", Filename, imageData.Key, width, height, Fps);

                var videoMetadata = new VideoMetadata
                {
                    Key = imageData.Key,
                    FileName = string.Format("{0}{1}", imageData.Key, ".avi"),
                    Width = imageData.Image.Width,
                    Height = imageData.Image.Height,
                    Fps = Fps
                };

                //VideoWriter captureOutput = new VideoWriter(@"test.avi", -1, 1, width, height, true);
                //var captureOutput = new VideoWriter(@"test.avi", CvInvoke.CV_FOURCC('W', 'M', 'V', '3'), 1, width, height, true);
                var videoWriter = new VideoWriter(
                    GetTempFilePath(_tmpRecordPath, videoMetadata.FileName),
                    CvInvoke.CV_FOURCC('D', 'I', 'V', 'X'),
                    Fps,
                    videoMetadata.Width,
                    videoMetadata.Height,
                    true);

                _recorders.Add(videoMetadata, videoWriter);

                _isRecorderStarted = true;
            }

            if (!_isRecorderStarted) return;

            // TODO: The _recorders.Single may raise an exception if sequence is empty or multiple items in sequence match
            var recorder = _recorders.Single(kvp => Equals(kvp.Key.Key, imageData.Key)).Value;

            //_recorder = new VideoWriter(Filename, 10, 320, 240, true);
            if (recorder != null)
            {
                Image<Rgb, byte> imageCopy = null;
                try
                {
                    Console.WriteLine("Write image frame");
                    imageCopy = imageData.Image;
                    recorder.WriteFrame(imageCopy.Convert<Bgr, byte>());
                }
                finally
                {
                    if (imageCopy != null)
                        imageCopy.Dispose();
                }
            }
        }