Emgucv не выпускает ресурс - PullRequest
       17

Emgucv не выпускает ресурс

0 голосов
/ 15 ноября 2018

Я использую EmguCV 3.4.3.3016 для захвата кадра с камеры. Ниже приведен код для простого захвата кадра при каждом нажатии button1. Моя проблема в том, что программа не высвобождает ресурсы, поэтому объем памяти, используемой для программы, очень быстро увеличивается (до ГБ), что приводит к тому, что программа не отвечает, а затем происходит сбой.

enter image description here

Кто-нибудь знает причину и решение?

private void button1_Click(object sender, EventArgs e)
{
    if (cap != null)
    {
         cap = new VideoCapture(0);
    }

    Mat img = new Mat();
    cap.Grab();
    cap.Retrieve(img);
    pictureBox1.Image = img.Bitmap;
}

Ответы [ 4 ]

0 голосов
/ 10 декабря 2018
private void button1_Click(object sender, EventArgs e)
        {
            if (cap != null) //Why... Are you sure? Not cap==null ???
            {
                cap.Dispose();
                cap = new VideoCapture(0);
            }


            Mat img = new Mat();
            cap.Grab();
            cap.Retrieve(img);
            if (pictureBox1.Image != null)
            {
                var tempImage = pictureBox1.Image;
                pictureBox1.Image = null;
                tempImage.Dispose();

            }
            pictureBox1.Image =new Bitmap( img.Bitmap);
            img.Dispose();
        }
0 голосов
/ 18 ноября 2018

Я могу запустить твой код нормально. У вас есть другая зависимость? Какая версия окна вашей машины, 32 или 64 бит? Попробуйте отладить его на правильной платформе, Debug -> [your-project] Properties -> Build -> Platform target.

0 голосов
/ 20 ноября 2018

Оказывается, EmguCV - это просто оболочка OpenCV, мы должны очистить его вручную, используя GC.Collect().

0 голосов
/ 17 ноября 2018

Я столкнулся с той же проблемой, что и вы раньше.Это не из-за вашего кода или EmguCV, а из-за настроек отладки вашего решения.Попробуйте снять проверку на Tools>Options>Debugging>Suppress JIT optimization on module load.

...