Изображение <,> не будет утилизироваться с помощью EmguCV - PullRequest
0 голосов
/ 23 декабря 2018

Этот вопрос был задан много , но никто не ответил!Я использую EmguCV, оболочку OpenCV для .NET.Я удаляю все созданные объекты, но мое приложение все еще использует все больше памяти, пока оно не падает.Я почти все перепробовал, в том числе: .Dispose() =null using() и даже GC работал почти каждые полсекунды, ничего не получалось!Вот мой код:

(я выбрал 100 отсканированных изображений, все в формате JPG и 300 dpi). Одно из этих изображений загружается в DropBox для сохранения качества: https://www.dropbox.com/s/tsbe8pesbxk7dsz/Example.jpg?dl=0

private void OpenFolder_Click(object sender, EventArgs e)
{
    using (OpenFileDialog open = new OpenFileDialog())
    {
        open.Multiselect = true;
        if (open.ShowDialog() == DialogResult.OK)
            for (int i = 0; i < open.FileNames.Count(); i++)
                using (Image<Bgr, byte> ToProcess = new Image<Bgr, byte>(open.FileNames[i]))
                    ProcessImage (ToProcess);
    }
}

private void ProcessImage (Image<Bgr, byte> imgInput)
{
    imgInput._SmoothGaussian(5);            
}

Также я пытался обновить код внутри ProcessImage Функция до следующего, но моя программа зависает и вылетает!

IntPtr image = imgInput;
imgInput._SmoothGaussian(5);
CvInvoke.cvReleaseImage(ref image);

Важное обновление: , еслиФункция завершается до того, как моя программа падает, как ни удивительно, она освобождает всю память.Вот график.

Ram going up

Я использую VS 2017-Community, 64-разрядную версию Win10, как актуальную, так и последнюю стабильную версию EmguCV 3.4.3

...