C# OpenCv:u=从视频文件读取帧时出现0异常

C# OpenCv:u=从视频文件读取帧时出现0异常,c#,emgucv,C#,Emgucv,我试图从视频文件中获取帧,但在读取帧时,OpenCv:u=正在引发0异常。我正在使用Emgu.Cv dll。 我将代码编写如下: private void GetVideoFrames(String Filename) { try { captureFrame = new Capture(Filename); bool Reading = true; while (Reading) { usi

我试图从视频文件中获取帧,但在读取帧时,OpenCv:u=正在引发0异常。我正在使用Emgu.Cv dll。 我将代码编写如下:

private void GetVideoFrames(String Filename)
{
    try
    {
        captureFrame = new Capture(Filename);
        bool Reading = true;
        while (Reading)
        {
            using (frame = captureFrame.QueryFrame().ToImage<Bgr, Byte>())
            {
                if 
                if (frame != null)
                {
                    imageBox1.Image = frame;
                    frameCount++;
                }
                else
                {
                    Reading = false;
                }
            }
        }
    }
private void GetVideoFrames(字符串文件名)
{
尝试
{
captureFrame=新捕获(文件名);
布尔读数=真;
边读
{
使用(frame=captureFrame.QueryFrame().ToImage())
{
如果
如果(帧!=null)
{
imageBox1.图像=帧;
frameCount++;
}
其他的
{
阅读=错误;
}
}
}
}

任何人都可以提供一些帮助。

可能是您需要释放内存。例如frame.release();

根据我的说法,您应该制作一份从摄像头抓取的帧副本。您可以输入以下代码。它经过测试,没有错误

    Capture captureFrame = new Capture(Filename);
    Mat frame = new Mat();
    Mat frame_copy = new Mat();

    //Capture Image from file
    private void GetVideoFrames(String Filename)
    {
        try
        {
            captureFrame = new Capture(Filename);
            captureFrame.ImageGrabbed += ShowFrame;
            captureFrame.Start();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }

    //Show in ImageBox
    private void ShowFrame(object sender, EventArgs e)
    {
        captureFrame.Retrieve(frame);
        frame_copy = frame;
        imageBox1.Image = frame_copy ;
    }

您认为
使用
后的
if
正确且必要吗?不,这只是一个错误。您可以纠正这一错误,还请提供异常消息和堆栈跟踪