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(); }
/// <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); }
/// <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(); }
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; } }