Я программирую свое приложение на 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 минуту после запуска моего приложения, он не отвечает, и я вижу это сообщение о моей графической карте:
Теперь, моем вопросы:
- Должен ли я освободить
Image< , >
илиUMat
с помощьюCvInvoke.cvReleaseImage()
илиGarbage collector
сделать это? - Должен ли я использовать
using
дляBitmap
и других подобных случаях? - В случае NO для вопросов выше, как я могу это исправить?
Отметьте, что мое приложение работает отлично, когда я использую одиночное изображение (когда я просто звоню SomeProcessesOnSingleImage
метод).
UPDATE 1: Я использую OpenCL (UseOpenCL = TRUE)