EmguCV 中的图像不释放资源
Images in EmguCV not releasing resources
我正在使用 EmguCV 3.1.0.2282,我发现当我使用图像时,有时它不会释放资源并消耗内存,直到 PC 资源不足并出现内存不足异常被抛出。
这是我在我的应用程序中所做的测试代码。单击该按钮时,将根据内存中现有的位图实例化一个新的本地图像。如果复选框被选中,它将进行手动处理。
private void button1_Click(object sender, EventArgs e)
{
Image<Bgr, Byte> TempImage = new Image<Bgr, Byte>(CurrentLeftBitmap);
TempImage.ThresholdBinary(new Bgr(2.2, 3.3, 4.4), new Bgr(100.0, 100.0, 100.0));
if (checkBox1.Checked)
{
TempImage.Dispose();
TempImage = null;
}
}
我发现每次单击按钮时,内存都会下降,并且在不重新启动应用程序的情况下不会释放。即使我进行手动处理,内存仍然会下降。有趣的是,如果我注释掉 ThresholdBinary 步骤,它就可以正常工作。但是,它仍然需要手动处理。我也试过 USING 语句,但还是一样。
我的问题是,有没有人遇到过类似的情况?实现这些图像对象的正确方法是什么?
是的,这样做会 运行 你失去记忆。我设法耗尽了我的 32GB 系统,对你的方法进行了 5000 次迭代。问题是 ThresholdBinary return 另一个图像,您没有拍摄该图像,因此内存已分配但无法处理。更改
TempImage.ThresholdBinary(new Bgr(2.2, 3.3, 4.4), new Bgr(100.0, 100.0, 100.0));
到
Image<Bgr, byte> newImage = TempImage.ThresholdBinary(new Bgr(2.2, 3.3, 4.4), new Bgr(100.0, 100.0, 100.0));
会有帮助。
因为他们是当地人,所以 GC 最终会抽空清理他们。但是处理掉东西总是一个好主意。所以我添加了
TempImage.Dispose();
newImage.Dispose();
运行这5000次我的内存占用几乎没有变化
我正在使用 EmguCV 3.1.0.2282,我发现当我使用图像时,有时它不会释放资源并消耗内存,直到 PC 资源不足并出现内存不足异常被抛出。
这是我在我的应用程序中所做的测试代码。单击该按钮时,将根据内存中现有的位图实例化一个新的本地图像。如果复选框被选中,它将进行手动处理。
private void button1_Click(object sender, EventArgs e)
{
Image<Bgr, Byte> TempImage = new Image<Bgr, Byte>(CurrentLeftBitmap);
TempImage.ThresholdBinary(new Bgr(2.2, 3.3, 4.4), new Bgr(100.0, 100.0, 100.0));
if (checkBox1.Checked)
{
TempImage.Dispose();
TempImage = null;
}
}
我发现每次单击按钮时,内存都会下降,并且在不重新启动应用程序的情况下不会释放。即使我进行手动处理,内存仍然会下降。有趣的是,如果我注释掉 ThresholdBinary 步骤,它就可以正常工作。但是,它仍然需要手动处理。我也试过 USING 语句,但还是一样。
我的问题是,有没有人遇到过类似的情况?实现这些图像对象的正确方法是什么?
是的,这样做会 运行 你失去记忆。我设法耗尽了我的 32GB 系统,对你的方法进行了 5000 次迭代。问题是 ThresholdBinary return 另一个图像,您没有拍摄该图像,因此内存已分配但无法处理。更改
TempImage.ThresholdBinary(new Bgr(2.2, 3.3, 4.4), new Bgr(100.0, 100.0, 100.0));
到
Image<Bgr, byte> newImage = TempImage.ThresholdBinary(new Bgr(2.2, 3.3, 4.4), new Bgr(100.0, 100.0, 100.0));
会有帮助。
因为他们是当地人,所以 GC 最终会抽空清理他们。但是处理掉东西总是一个好主意。所以我添加了
TempImage.Dispose();
newImage.Dispose();
运行这5000次我的内存占用几乎没有变化