将视频导入项目时无法分配足够的内存
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
我正在使用 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