Я использую OpenCV 2.2.0, скомпилированный на Ubuntu из исходных текстов.Я могу подтвердить, что предоставленный вами исходный код работает должным образом.Так что проблема в другом.
Я не смог воспроизвести вашу проблему с помощью mencoder (установка на моем компьютере - небольшая проблема), поэтому я использовал ffmpeg
, чтобы обернуть необработанное видео в контейнер AVI:
ffmpeg -s cif -i ~/local/sample-video/foreman.yuv -vcodec copy foreman.avi
(foreman.yuv - стандартная последовательность изображений CIF, которую вы можете найти в сети, если вы осмотрите ).
Запуск AVI из ffmpeg
через ваш источник дает следующее:
misha@misha-desktop:~/Desktop/stackoverflow$ python ocv_video.py foreman.avi
<Capture 0xa71120>
352.0
288.0
<iplimage(nChannels=3 width=352 height=288 widthStep=1056 )>
<iplimage(nChannels=3 width=352 height=288 widthStep=1056 )>
...
Так что все работает как положено.Что вы должны проверить:
- Есть ли у вас какие-либо ошибки на стандартном выходе / стандартная ошибка?OpenCV использует библиотеки
ffmpeg
для чтения видеофайлов, так что следите за информативными сообщениями.Вот что происходит, если вы пытаетесь воспроизвести видеофайл RAW без контейнера (звучит похоже на вашу проблему):
ошибка:
misha@misha-desktop:~/Desktop/stackoverflow$ python ocv_video.py foreman.yuv
[IMGUTILS @ 0x7fff37c8d040] Picture size 0x0 is invalid
[IMGUTILS @ 0x7fff37c8cf20] Picture size 0x0 is invalid
[rawvideo @ 0x19e65c0] Could not find codec parameters (Video: rawvideo, yuv420p)
[rawvideo @ 0x19e65c0] Estimating duration from bitrate, this may be inaccurate
GStreamer Plugin: Embedded video playback halted; module decodebin20 reported: Your GStreamer installation is missing a plug-in.
<Capture 0x19e3130>
0.0
0.0
- Убедитесь, что ваш AVIФайл на самом деле содержит информацию, необходимую для воспроизведения видео.Как минимум, это должны быть размеры рамы.RAW-видео обычно не содержит никакой информации, кроме фактических данных о пикселях, поэтому необходимо знать размеры кадра и FPS.Вы можете ошибочно угадать FPS и по-прежнему получать просматриваемое видео, но если вы ошибетесь в размерах, видео будет недоступно для просмотра.
- Убедитесь, что файл AVI, который вы пытаетесь открыть, действительно воспроизводим.Попробуйте
ffplay file.avi
- если это не удастся, проблема, скорее всего, связана с файлом.Попробуйте использовать ffmpeg
для транскодирования вместо mencoder
. - Убедитесь, что вы можете воспроизводить другие видео, используя тот же метод, что и выше.Если вы не можете, значит, ваша
ffmpeg
установка не работает.