C# EmguCV在c语言中的视频读取

C# EmguCV在c语言中的视频读取,c#,emgucv,C#,Emgucv,我正在开发一个项目,其中我需要从opnefile对话加载一个视频文件,但我不知道如何做到这一点。加载视频后,我还想停止或暂停视频以进行进一步处理。我使用的是EmguCV 3.0版本 我的密码在这里 OpenFileDialog ofd1 = new OpenFileDialog(); ofd1.Filter = "All Videos Files |*.dat; *.wmv; *.3g2; *.3gp; *.3gp2; *.3gpp; *.amv; *.asf; *.a

我正在开发一个项目,其中我需要从opnefile对话加载一个视频文件,但我不知道如何做到这一点。加载视频后,我还想停止或暂停视频以进行进一步处理。我使用的是EmguCV 3.0版本

我的密码在这里

OpenFileDialog ofd1 = new OpenFileDialog();
            ofd1.Filter = "All Videos Files |*.dat; *.wmv; *.3g2; *.3gp; *.3gp2; *.3gpp; *.amv; *.asf;  *.avi; *.bin; *.cue; *.divx; *.dv; *.flv; *.gxf; *.iso; *.m1v; *.m2v; *.m2t; *.m2ts; *.m4v; *.mkv; *.mov; *.mp2; *.mp2v; *.mp4; *.mp4v; *.mpa; *.mpe; *.mpeg; *.mpeg1; *.mpeg2; *.mpeg4; *.mpg; *.mpv2; *.mts; *.nsv; *.nuv; *.ogg; *.ogm; *.ogv; *.ogx; *.ps; *.rec; *.rm; *.rmvb; *.tod; *.ts; *.tts; *.vob; *.vro; *.webm";
            ofd1.InitialDirectory = @"C:\";
            ofd1.Title = "Please select a video file.";
            if (ofd1.ShowDialog() == DialogResult.OK)
            {
                vCapture = new Capture(ofd1.FileName.ToString());
                Image<Bgr, byte> img = vCapture.QueryFrame();
            }

接下来如何收集帧流。

查看EmguCV文档中的示例代码:

这将使您的代码如下所示:

Image<Bgr, byte> img;
OpenFileDialog ofd1 = new OpenFileDialog();
ofd1.Filter = "All Videos Files |*.dat; *.wmv; *.3g2; *.3gp; *.3gp2; *.3gpp; *.amv; *.asf;  *.avi; *.bin; *.cue; *.divx; *.dv; *.flv; *.gxf; *.iso; *.m1v; *.m2v; *.m2t; *.m2ts; *.m4v; *.mkv; *.mov; *.mp2; *.mp2v; *.mp4; *.mp4v; *.mpa; *.mpe; *.mpeg; *.mpeg1; *.mpeg2; *.mpeg4; *.mpg; *.mpv2; *.mts; *.nsv; *.nuv; *.ogg; *.ogm; *.ogv; *.ogx; *.ps; *.rec; *.rm; *.rmvb; *.tod; *.ts; *.tts; *.vob; *.vro; *.webm";
ofd1.InitialDirectory = @"C:\";
ofd1.Title = "Please select a video file.";
if (ofd1.ShowDialog() == DialogResult.OK)
{
    vCapture = new Capture(ofd1.FileName.ToString());
    Application.Idle += new EventHandler(delegate(object sender, EventArgs e)
    {            
        img = vCapture.QueryFrame();
    }
}
vCapture.Start(); // play
vCapture.Pause(); // pause
然后,您可能想将img交给您用来观看视频的任何东西。

在循环中调用QueryFrame?
Image<Bgr, byte> img;
OpenFileDialog ofd1 = new OpenFileDialog();
ofd1.Filter = "All Videos Files |*.dat; *.wmv; *.3g2; *.3gp; *.3gp2; *.3gpp; *.amv; *.asf;  *.avi; *.bin; *.cue; *.divx; *.dv; *.flv; *.gxf; *.iso; *.m1v; *.m2v; *.m2t; *.m2ts; *.m4v; *.mkv; *.mov; *.mp2; *.mp2v; *.mp4; *.mp4v; *.mpa; *.mpe; *.mpeg; *.mpeg1; *.mpeg2; *.mpeg4; *.mpg; *.mpv2; *.mts; *.nsv; *.nuv; *.ogg; *.ogm; *.ogv; *.ogx; *.ps; *.rec; *.rm; *.rmvb; *.tod; *.ts; *.tts; *.vob; *.vro; *.webm";
ofd1.InitialDirectory = @"C:\";
ofd1.Title = "Please select a video file.";
if (ofd1.ShowDialog() == DialogResult.OK)
{
    vCapture = new Capture(ofd1.FileName.ToString());
    Application.Idle += new EventHandler(delegate(object sender, EventArgs e)
    {            
        img = vCapture.QueryFrame();
    }
}
vCapture.Start(); // play
vCapture.Pause(); // pause