Невозможно создать захват в Эмгу - PullRequest
0 голосов
/ 13 декабря 2010

Я получаю исключение нулевой ссылки, когда пытаюсь захватить видео из файла avi , используя Emgu в C #.

Захват захвата = новый Захват ("somepath.avi")

В моей ОС установлен кодек K-Lite.Вот трассировка стека:

>     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 ]

2 голосов
/ 17 декабря 2010

Дважды проверьте, совместим ли ваш файл avi с opencv. Вы должны использовать mencoder и конвертировать его, используя правильный кодек, как объяснено здесь . Один поддерживаемый кодек - это необработанный кодек I420. Вы можете конвертировать AVI в I420 с помощью mencoder, используя эту команду

mencoder inputVideo.avi -ovc raw -vf format=i420 -o convertedVideo.avi
0 голосов
/ 30 мая 2012

У меня была такая же проблема. Я преобразовал файл .MOV в .AVI, используя видеокодек под названием FFmpeg, и когда я добавил opencv_ffmpeg.dll в мой проект, это сработало. DLL была в каталоге bin пакета Emgu. Попробуйте выяснить, какой кодек использует ваш файл .avi, и проверьте, есть ли для этого кодека dll. Скопируйте dll в каталог проекта, запомните, чтобы установить «Копировать, если новее» в свойство «Копировать локально» файла и посмотреть, работает ли он. Я использовал программу под названием «Pazera Free Mov to Avi» для преобразования видеофайлов с различными вариантами кодеков.

...