无法在Emgu中创建捕获

时间:2010-12-13 14:15:40

标签: c# video emgucv

当我在C#中使用 Emgu 尝试从 avi文件 捕获视频时,我收到了null-reference-exception。

捕获捕获=新捕获(“somepath.avi”)

我的操作系统上安装了K-Lite Codec。 这是堆栈跟踪:

>     at Emgu.CV.Capture..ctor(String fileName)
>     
>        at HelloWorld.Program.Main() in D:\5th year stuff\1st Semester\Computer
> Vision\libemgucv-2.1.0.793-win64\Emgu.CV.Example\HelloWorld\Program.cs:line
> 30
>     
>        at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
>     
>        at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
>     
>        at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
>     
>        at System.Threading.ThreadHelper.ThreadStart()

2 个答案:

答案 0 :(得分:2)

仔细检查您的avi文件是否与opencv兼容。你应该使用mencoder并使用适当的编解码器转换它,如here所述。 一个受支持的编解码器是原始的I420。您可以使用此命令将avi转换为I420 one with mencoder

mencoder inputVideo.avi -ovc raw -vf format=i420 -o convertedVideo.avi

答案 1 :(得分:0)

我遇到了同样的问题。我使用名为FFmpeg的视频编解码器将.MOV文件转换为.AVI,当我将opencv_ffmpeg.dll添加到我的项目时,它工作正常。 dll位于Emgu包的bin目录中。尝试找出你的.avi文件使用的编解码器,并检查该编解码器是否有dll。将dll复制到项目目录,记住将“Copy if newer”设置为文件的“Copy local”属性,看看它是否有效。我使用了一个名为“Pazera Free Mov to Avi”的软件来转换具有不同编解码器选项的视频文件。