Не могу открыть MPG-файл для захвата с помощью EmguCV с C # - PullRequest
0 голосов
/ 04 марта 2012

Я пытаюсь открыть mpg-файл с помощью emguCV.Я использую следующий код:

    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);
                }
            }
        }
    }

Если веб-камера подключена, все работает нормально, но когда я отключаю веб-камеру, строка instance = new Capture(sFileName); выдает исключение NullReferenceException:

Сообщение =«Невозможно создать захват из C: \ tmp \ MarkerMovie.mpg»

Я отладил и обнаружил причину в конструкторе захвата.Следующая команда всегда возвращает нулевой указатель:

_ptr = CvInvoke.cvCreateFileCapture(fileName);

Я могу открыть то же видео с помощью C ++, используя этот код:

cap = cvCaptureFromFile("C:\\tmp\\MarkerMovie.mpg");

Я новичок в openCV, поэтому я 'Я не уверен, какая информация вам нужна, чтобы помочь мне.Я вчера установил emguCV с http://sourceforge.net/projects/emgucv/ на компьютер с Windows XP.Версия установщика - x86_2.3.0.1416.Я включил opencv_core231.dll, opencv_highgui231.dll и opencv_imgproc231.dll в свой проект.

Кто-нибудь знает, как я могу заставить этот код работать?Дайте мне знать, если вам нужна дополнительная информация.

Спасибо.

Ответы [ 2 ]

5 голосов
/ 02 мая 2012

У меня была такая же проблема, и добавление opencv_ffmpeg.dll в проект, похоже, решает ее. (Находится в каталоге bin в каталоге Emgu CV). Я попробовал его в проекте, который вы разместили, и, похоже, он тоже работает. Надеюсь, это поможет.

0 голосов
/ 06 июля 2016

При использовании EmguCV в C # вам необходимо поместить файл opencv_ffmpeg.dll, например: opencv_ffmpeg2410.dll, будьте осторожны, если у вас x86 или 64 бита

...