将视频导入项目时无法分配足够的内存

Can't allocate enough memory while importing video to project

我正在使用 EmguCv 和 C# 编写一个程序来检测视频流中的某些模式。起初我试图将视频导入项目,但几秒钟后,程序冻结并且不再加载。

我真的不知道,但我认为可能是因为我在导入视频时做错了,大多数全部是因为程序在 14 秒后使用了 2 GB 的 RAM

要导入视频并将其显示到 GUI,我使用以下代码:

private void timer1_Tick(object sender, EventArgs e) 
{
     Orginal.Image = _capture.QueryFrame();         
}

private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
{
    _capture = new Capture(openFileDialog1.FileName.ToString());
}

private void button2_Click(object sender, EventArgs e)//Import-Button
{
    openFileDialog1.ShowDialog();
    string _FilePath = openFileDialog1.FileName.ToString();
    textBox1.Text = _FilePath;
}

private void button1_Click(object sender, EventArgs e) //Start-Button
{
    My_Time.Interval = 1000 / FPS;
    My_Time.Tick += new EventHandler(timer1_Tick);
    My_Time.Start();
    _capture = new Capture(openFileDialog1.FileName.ToString());
}

这是导入视频的正确方法,还是有更好的方法?

抛出的异常如下:

Emgu.CV.Util.CvException in Emgu.CV.dll("OpenCV: Failed to allocate 6220800 bytes")

您使用

抓取的每个图像都存在内存泄漏
Orginal.Image = _capture.QueryFrame(); 

我不知道你的计时器滴答毫秒,但如果你每 25 毫秒获得一个 6MB 的图像,你每秒获得 150MB,在 14 秒内你获得 2GB 的内存分配。

只需将经典示例之一下载到 play/record 视频文件,然后根据您的需要执行模式检测。 http://www.emgu.com/wiki/index.php/Video_Files