【问题标题】:How do I dispose a Matrix Array in OpenCVSharp?如何在 OpenCVSharp 中处理矩阵数组?
【发布时间】:2022-07-21 17:47:24
【问题描述】:

为了释放 OpenCVSharp.Mat 对象的内存,我使用了 ResourceTracker according to the documentation

using (ResourcesTracker t = new ResourcesTracker())
{
    Mat finalMat = t.T(new Mat());
}

但是,这种语法似乎不适用于像这样使用的 Mats 数组:

Mat[] images = t.T(new Mat[length]);

这给了我一个 System.ArgumentNullException,“该值不能为 NULL”。

我试过调用数组的.Dispose(),但这似乎对内存没有影响。

我知道我可以让垃圾收集来完成这项工作,但我宁愿正确地完成它。

【问题讨论】:

    标签: c# opencv


    【解决方案1】:

    我最终这样做了:

    for (int j = 0; j<i; j++)
                {
                    images[j].Dispose();
                }
    

    虽然并没有真正改变任何东西,但我不太明白为什么当它们是一个数组而不是单个 Mat 项目时我不需要处置这些项目。

    我的内存泄漏来自使用stitcher方法而不是使用stitcher.Dispose();

    【讨论】:

      猜你喜欢
      • 2019-05-23
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 2016-04-23
      • 2013-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多