OpenCV 1.0: cvCreateFileCapture всегда возвращает ноль в Fedora 11 - PullRequest
2 голосов
/ 16 января 2010

Я пытаюсь открыть видеофайл с помощью функции highgui.cvCreateFileCapture (path) openCV 1.0 в системе Fedora 11. К сожалению, эта функция всегда возвращает ноль. Я пытался использовать его на нескольких разных видеоформатах, и я даже предпринял шаги, рекомендованные на вики openCV (http://opencv.willowgarage.com/wiki/VideoCodecs), чтобы использовать mencoder для транскодирования в RAWI420 следующим образом:

$ mencoder in.avi -ovc raw -vf format=i420 -o out.avi 

Это, кажется, не имеет никакого эффекта, поэтому я немного застрял. Ошибка не возникает, возвращается значение null (или, поскольку я использую оболочку Python, None). У меня установлены ffmpeg, ffmpeg-devel и ffmpeg-libs, поэтому я думаю, что у меня должна быть соответствующая поддержка кодеков. Кто-нибудь знает, как это можно решить, или вместо решения, какие шаги можно предпринять для устранения проблемы?

Ответы [ 3 ]

1 голос
/ 21 июня 2011

У меня была эта проблема в Ubuntu 10.10, и для меня это была проблема с библиотеками. Я не мог выяснить, какая библиотека отсутствовала, но я обнаружил, что выполнение сценариев установки для Openframeworks до компиляции OpenCV работало!

0 голосов
/ 19 февраля 2011

OpenCV уже на версии 2.x

Сделайте себе одолжение и обновите его до версии 2.1 (как минимум)

0 голосов
/ 19 февраля 2011

Это зависит от того, как вы установили OpenCV.OpenCV может использовать один из множества различных движков для чтения видеофайлов, включая ffmpeg, gstreamer и xine (я полагаю).Убедитесь, что ваша установка действительно использует ffmpeg в качестве движка.Самый простой способ сделать это - вызвать ldd programname и посмотреть, указан ли ffmpeg в качестве одной из зависимостей.Кроме того, вам нужно убедиться, что движок способен обрабатывать ваш видеокодек.

OpenCV, к сожалению, очень тихо говорит о причинах ошибок.Возвращение NULL может означать «невозможно обработать кодек», а это может означать «доступ запрещен».Вы можете запустить ваш процесс через strace и посмотреть, что возвращают системные вызовы, как один из возможных вариантов.В худшем случае вам нужно будет использовать отладчик и пройтись по коду при вызове cvCreateFileCapture.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...