2010-12-13 31 views
0

我得到空引用的異常,當我在C#中使用Emgu嘗試捕獲視頻avi文件創建捕獲。無法在Emgu

捕捉捕捉=新的捕捉( 「somepath.avi」)

我有我的操作系統上安裝K-精簡版編解碼器。 這裏的堆棧跟蹤:

>  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() 
+0

請發佈完整的堆棧跟蹤。構造函數必須拋出異常,但我們不知道爲什麼... – 2010-12-13 14:22:05

回答

2

仔細檢查你的AVI文件是OpenCV的兼容。您應該使用mencoder並使用正確的編碼解碼器進行轉換,如here所述。 一個支持的編解碼器是原始的I420之一。你可以使用這個命令將你轉換成AVI到I420與mencoder一個

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

我遇到了同樣的問題。我使用名爲FFmpeg的視頻編解碼器將.MOV文件轉換爲.AVI文件,並在將opencv_ffmpeg.dll添加到我的項目時使用。該DLL位於Emgu軟件包的bin目錄中。嘗試找出你的.avi文件正在使用什麼編解碼器,並檢查是否有該編解碼器的DLL。將dll複製到項目目錄中,記住將「Copy if newer」設置爲文件的「Copy local」屬性並查看它是否有效。我使用了一個名爲「Pazera Free Mov to Avi」的軟件來轉換具有不同編解碼器選項的視頻文件。