Как сохранить определенный кадр видео с помощью emgucv?
мой код без ошибок, но не сохраняет ни одного кадра. когда я ставлю видео на паузу, я хочу сохранить текущий кадр.
Что я уже пробовал:
<pre> <pre>namespace VideoCaptureApplication1 { public partial class Form2 : Form { private Capture _capture = null; Image<Bgr, Byte> frame; double FrameRate = 0; double TotalFrames = 0; double Framesno = 0; bool IsPlaying = false; public Form2() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); if (openFileDialog1.ShowDialog() == DialogResult.OK) { try { _capture = null; _capture = new Capture(openFileDialog1.FileName); FrameRate = _capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FPS); TotalFrames = _capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_FRAME_COUNT); Application.Idle += ProcessFrame ; IsPlaying = true; } catch (NullReferenceException excpt) { MessageBox.Show(excpt.Message); } } }
private void ProcessFrame(object sender, EventArgs arg) { try { Framesno = _capture.GetCaptureProperty(Emgu.CV.CvEnum.CAP_PROP.CV_CAP_PROP_POS_FRAMES); frame = _capture.QueryFrame(); if (frame != null && IsPlaying==true) { pictureBox1.Image = frame.ToBitmap(); Thread.Sleep((int)(1000.0 / FrameRate)); } } catch (Exception ex) { MessageBox.Show(ex.Message.ToString()); } } private void button4_Click(object sender, EventArgs e) { frame.Save("D\\" + Frame.ToString()+".jpg"); }