Esempio n. 1
0
        static void Main(string[] args)
        {
            //initialize capture and buffer
            VideoCaptureBase capture = new FileCapture("../Resources/video-vignette.mp4"); // /*or*/ capture = new CameraCapture();

            Bgr <byte>[,] frame = null;

            //initialize devignetting alg
            capture.ReadTo(ref frame);
            var devignetting = new Devignetting(frame, optimizeVignettingCentre: true);

            Bgr <byte>[,] correctedIm = frame.CopyBlank();

            //do the job
            do
            {
                capture.ReadTo(ref frame);
                if (frame == null)
                {
                    break;
                }
                frame.Show("Original");

                frame.CopyTo(correctedIm, Point.Empty);
                bool isDone = devignetting.DevignetteSingleStep(correctedIm);
                correctedIm.Show("Corrected");

                Console.WriteLine("Frame: {0:000}, is done: {1}", capture.Position, isDone);
            }while (!(Console.KeyAvailable && Console.ReadKey(true).Key == ConsoleKey.Escape));

            capture.Close();
        }
Esempio n. 2
0
        /// <summary>
        /// Get a list of frames from a video file in AVI format.
        /// </summary>
        /// <param name="filename">Input video filename.</param>
        /// <returns>Frame list.</returns>
        private List <Texture2D> frameListFromAvi(string filename)
        {
            List <Texture2D> frames = new List <Texture2D>();

            using (FileCapture reader = FileCaptureX.CaptureLocalFile(filename)) {
                Console.WriteLine("reading file " + filename);

                foreach (Image <Bgr <byte> > image in reader)
                {
                    Texture2D frame = new Texture2D(Graphics, image.Width, image.Height);
                    Bgr <byte>[,] data = new Bgr <byte> [image.Height, image.Width];
                    Color[] linear = new Color[image.Width * image.Height];

                    image.CopyTo(data);

                    int h = 0;
                    for (int k = 0; k < image.Height; k++)
                    {
                        for (int i = 0; i < image.Width; i++)
                        {
                            linear[h++] = new Color(data[k, i].R, data[k, i].G, data[k, i].B);
                        }
                    }

                    Console.WriteLine("frame " + reader.Position);
                    frame.SetData(linear);
                    frames.Add(frame);
                }

                Console.WriteLine("done.");
                reader.Close();
            }

            return(frames);
        }
Esempio n. 3
0
        /// <summary>
        /// Uses the dotImaging library to extract each frame from a video and saving it.
        /// </summary>
        /// <param name="savePath">Where the frames should be saved.</param>
        /// <param name="filePath">Path to videofile.</param>
        public void videoImageExtractor(String savePath, String filePath)
        {
            var reader = new FileCapture(filePath);

            reader.Open();
            reader.SaveFrames(savePath, "{0}.png");
            reader.Close();
        }
Esempio n. 4
0
        private void OpenVideo(VideoDataLine dataLine)
        {
            if (this.currentDataLine != null)
            {
                reader.Close();
            }

            try
            {
                reader = new FileCapture(project.Folder + "\\" + dataStream.SubFolder + "\\" + dataLine.VideoFileName);
                reader.Open();
                timer.Interval  = Convert.ToInt32((1 / reader.FrameRate) * 1000);
                currentDataLine = dataLine;
                lblStatus.Text += "Current file: " + dataLine.VideoFileName;
            }
            catch (Exception ex)
            {
                lblStatus.Text = "Error: " + ex.Message;
                logger.WriteLineError("Error occured: " + ex.Message);
                throw ex;
            }
        }