Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# CvInvoke.cvReleaseImage()在EmguCV(3.1)中的用法_C#_Image Processing_Garbage Collection_Emgucv_Using Statement - Fatal编程技术网

C# CvInvoke.cvReleaseImage()在EmguCV(3.1)中的用法

C# CvInvoke.cvReleaseImage()在EmguCV(3.1)中的用法,c#,image-processing,garbage-collection,emgucv,using-statement,C#,Image Processing,Garbage Collection,Emgucv,Using Statement,我使用visual studio 2013在C#中编程我的应用程序。为此,我使用EmguCV(3.1)。我从文件夹中加载每个图像文件,并对其进行一些处理。我的应用程序是这样的: private void SomeProcessesOnSingleImage(String filePath) { // Some Bitmap instances // Some Image<Gray, Byte> instances // Some Image<Bgr, B

我使用visual studio 2013在C#中编程我的应用程序。为此,我使用EmguCV(3.1)。我从文件夹中加载每个图像文件,并对其进行一些处理。我的应用程序是这样的:

private void SomeProcessesOnSingleImage(String filePath)
{
    // Some Bitmap instances
    // Some Image<Gray, Byte> instances
    // Some Image<Bgr, Byte> instances
    // Some UMat instances

    // Do some processes
    // Save file
}
private void BatchProcessor()
{
    String[] filePathes = Directory.GetFiles(d.SelectedPath);
    foreach(String path in filePathes)
    {
        SomeProcessesOnSingleImage(path);
    }
}
private void SomeProcessesOnSingleImage(字符串文件路径)
{
//一些位图实例
//一些图像实例
//一些图像实例
//一些UMat实例
//做一些程序
//保存文件
}
私有void批处理程序()
{
字符串[]filepaths=Directory.GetFiles(d.SelectedPath);
foreach(文件路径中的字符串路径)
{
SomeProcessesOnSingleImage(路径);
}
}
运行我的应用程序大约1分钟后,它没有响应,我看到关于我的图形卡的以下消息:

现在,我的问题是:

  • 我是否应该使用
    CvInvoke.cvReleaseImage()
    垃圾收集器
    释放
    Image<、
    UMat
  • 我是否应该使用
    使用
    位图
    和其他类似实例
  • 如果上述问题出现,我如何解决
  • 我注意到,当我使用单个图像时(当我只调用
    SomeProcessesOnSingleImage
    method时),我的应用程序do-it工作得非常好


    更新1:我使用OpenCL(UseOpenCL=true)

    您应该通过“使用语句”释放图像对象使用的内存。或者可以使用CvInvoke.cvReleaseImage()