c#emgu相机捕捉和内存泄漏?

时间:2016-11-27 11:58:28

标签: c# cameracapturetask emgucv

我在C#中使用emgu进行摄像头捕获以下代码:

    //video capture
    private Capture videoCapture = null;  //takes images from camera as image frames
    private Image<Bgr, Byte> videoCaptureImageFrame;
    private Image<Bgr, Byte> videoCaptureResizedFrame;
    //video capture

    private void ProcessFrame(object sender, EventArgs arg)
    {
        try
        {
            videoCaptureImageFrame = videoCapture.QueryFrame().ToImage<Bgr, Byte>();   

            if (videoCaptureImageFrame != null)
            {
                videoCaptureResizedFrame = videoCaptureImageFrame.Resize(960, 540, Emgu.CV.CvEnum.Inter.Cubic);                                        
                VideoCapturePictureBox.Image = videoCaptureResizedFrame.ToBitmap();                      
            }

        }
        catch (Exception ex)
        {
            MessageBox.Show("Video capture error #1: " + ex.Message.ToString());
        }
    }

    public void VideoCaptureReleaseData()
    {
        if (videoCapture != null)
            videoCapture.Dispose();
    }

    //video capture  
    private void MainForm_Load(object sender, EventArgs e)
    {
        //Dispose of Capture if it was created before
        if (videoCapture != null) videoCapture.Dispose();

        //video capture
        if (videoCapture == null)
        {                
            try
            {
                videoCapture = new Capture(0);
                videoCapture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameWidth, 1920);
                videoCapture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameHeight, 1080);
                videoCapture.SetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameCount, 25);

                Application.Idle += ProcessFrame;
            }
            catch (NullReferenceException excpt)
            {
                MessageBox.Show("Video capture error #2: " + excpt.Message);
            }
        }
        //video capture
    }

这段代码工作正常但我可以看到Visual Studio 2015不时显示进程内存消耗2GB的数据。 有时我得到以下错误:
&#34;视频捕获错误#1:opencv:u!= 0&#34;
和应用程序停止显示任何相机输出。

我认为上面的代码中有一些内存泄漏 这很奇怪,因为我根据教程编写了这段代码 你能帮我解决一下这段代码的错误吗?

0 个答案:

没有答案