0

Я программирую свое приложение на C# с помощью visual studio 2013. Для этого я использую EmguCV (3.1). Я загружаю каждый файл изображения из папки и выполняю на нем некоторый процесс. Мое приложение некоторые вещи, как это:CvInvoke.cvReleaseImage() использование в 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); 
    } 
} 

Примерно через 1 минуту после запуска моего приложения, он не отвечает, и я вижу это сообщение о моей графической карте:

enter image description here

Теперь, моем вопросы:

  1. Должен ли я освободить Image< , > или UMat с помощью CvInvoke.cvReleaseImage() или Garbage collector сделать это?
  2. Должен ли я использовать using для Bitmap и других подобных случаях?
  3. В случае NO для вопросов выше, как я могу это исправить?

Отметьте, что мое приложение работает отлично, когда я использую одиночное изображение (когда я просто звоню SomeProcessesOnSingleImage метод).

UPDATE 1: Я использую OpenCL (UseOpenCL = TRUE)

ответ

0

Вы должны освободить используемую память вашего объекта изображения с помощью "используя утверждение". или вы можете использовать CvInvoke.cvReleaseImage().