0

emgu を使用してカメラ キャプチャする C# のコードは次のとおりです。

    //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 で 2 GB のデータのプロセス メモリ消費が時々表示されることがわかります。
「ビデオ キャプチャ エラー #1: opencv: u != 0」というエラーが発生し
、アプリケーションが停止してカメラ出力が表示されないことがあります。

上記のコードで何らかのメモリリークが発生していると思います。
チュートリアルに従ってこのコードを書いたので、これは奇妙です。
このコードの何が問題なのか教えてください。

4

0 に答える 0