无法使用带有C#的EmguCV打开一个mpg-File进行捕获

ste*_*ckl 0 .net c# opencv emgucv

我正在尝试使用emguCV打开一个mpg文件.我使用以下代码:

    if (instance == null)
    {
        lock (m_lock)
        {
            try
            {
                instance = new Capture(0);  // capture from camera works fine if a camera is connected
            }
            catch (NullReferenceException)
            {
                String sFileName = @"C:\tmp\MarkerMovie.mpg";


                try
                {
                    if (File.Exists(sFileName))
                    {
                        instance = new Capture(sFileName);  // here the exception is thrown
                    }
                    else
                    {
                        MessageBox.Show("No Camera and no Video-File found");
                    }
                }
                catch (NullReferenceException)
                {
                    MessageBox.Show("Couldn't open Video: "+sFileName);
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果连接网络摄像头一切正常,但当我拔下网络摄像头时,该行instance = new Capture(sFileName);会抛出NullReferenceException:

Message ="无法从C:\ tmp\MarkerMovie.mpg创建捕获"

我调试并发现原因是在捕获的构造函数中.以下命令始终返回Null-Pointer:

_ptr = CvInvoke.cvCreateFileCapture(fileName);
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码使用C++打开相同的视频:

cap = cvCaptureFromFile("C:\\tmp\\MarkerMovie.mpg");
Run Code Online (Sandbox Code Playgroud)

我是openCV的新手,所以我不确定你需要哪些信息来帮助我.我昨天从http://sourceforge.net/projects/emgucv/在Windows XP计算机上安装了emguCV .installer-version是x86_2.3.0.1416.我将opencv_core231.dll,opencv_highgui231.dll和opencv_imgproc231.dll包含在我的项目中.

有人知道如何使这段代码有效吗?如果您需要更多信息,请与我们联系.

谢谢.

小智 5

我有同样的问题,并将opencv_ffmpeg.dll添加到项目似乎解决了它.(在Emgu CV目录的bin目录中找到)我已经在你发布的项目上尝试了它,它似乎也在工作.希望能帮助到你.