我大约有100张图像,所以我开始将它们一张一张地发送给ProcessImage
函数。并且它一直使用大量的Ram,直到达到5 GB左右,然后我的程序崩溃
如前所述:.SmoothGaussian
在当前图像中执行高斯平滑并返回结果。
请注意:我开始删除代码的某些部分,直到达到100%的程度为止,我的Ram问题是由特定的突出显示的代码行引起的!我也在使用Emgu CV版本3.4.3
我在声明后尝试同时输入:temp.Dispose();
和temp=null();
,但没有用!
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.CV.Util;
private void OpenFolder_Click(object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();
open.Multiselect = true;
if (open.ShowDialog() == DialogResult.OK)
{
for (int i = 0; i < open.FileNames.Count(); i++)
{
using (Image<Bgr, byte> ToProcess = new Image<Bgr,byte> (open.FileNames[i]))
{
ProcessImage(ToProcess, i);
}
}
}
}
ProcessImage函数:
private void ProcessImage (Image<Bgr, byte> imgInput, int counter)
{
//This line of code causes the problem!
var temp = imgInput.SmoothGaussian(5);
}