Почему я не могу открыть avi-видео в openCV?

Я просто написал простой пример чтения видео с openCV2.3.1, но, похоже, я не могу открыть avi-видео в любом случае 🙁

VideoCapture capture("guitarplaying.avi"); if(!capture.isOpened()){ std::cout<=0) break; } capture.release(); 

Я сделал точку останова в std::cout<<"cannot read video!\n" и обнаружил, что он останавливается здесь каждый раз. Итак, почему AVI-видео невозможно открыть? Благодаря!

1)
Убедитесь, что видеофайл находится в той же папке, что и приложение (я предполагаю, что вы уже пробовали это), иначе укажите абсолютный путь.

2)
Если вы работаете в Windows, вам может потребоваться пакет кодеков для чтения видеофайла (например, K-Lite Codec Pack ).

Как предположил Макмад, AVI – это просто контейнер, в котором могут размещаться разные аудио, видео или даже закрытые кодеки. Кроме того, здесь создаются сборки FFmpeg от Zeranoe для Windows. Вы можете получить дополнительную информацию о содержимом кодека вашего файла, если выполните следующие действия:

 ffmpeg -i guitarplaying.avi 

Вы должны увидеть результат, который выглядит следующим образом:

 ffmpeg version 0.8.7.git, Copyright (c) 2000-2011 the FFmpeg developers built on Dec 6 2011 09:20:43 with gcc 4.6.1 configuration: --pkg-config=pkg-config --enable-gpl --enable-version3 --enable -nonfree --enable-runtime-cpudetect --enable-memalign-hack --enable-postproc --a rch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32- --prefix=/home/wluc as/ffmpeg-cross/build/deploy --enable-libx264 --enable-libvpx --enable-zlib --en able-bzlib --enable-libxvid --enable-libfaac --enable-libmp3lame --enable-libvor bis --enable-libtheora --enable-libopenjpeg --enable-libfreetype libavutil 51. 30. 0 / 51. 30. 0 libavcodec 53. 40. 0 / 53. 40. 0 libavformat 53. 24. 0 / 53. 24. 0 libavdevice 53. 4. 0 / 53. 4. 0 libavfilter 2. 51. 0 / 2. 51. 0 libswscale 2. 1. 0 / 2. 1. 0 libpostproc 51. 2. 0 / 51. 2. 0 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '..\..\Videos\Sintel\sintel_trailer-720p .mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 title : Sintel Trailer artist : Durian Open Movie Team encoder : Lavf52.62.0 copyright : (c) copyright Blender Foundation | durian.blender.org description : Trailer for the Sintel open movie project Duration: 00:00:52.20, start: 0.000000, bitrate: 1165 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 1033 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc Metadata: creation_time : 1970-01-01 00:00:00 handler_name : VideoHandler Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, s16, 126 kb/s Metadata: creation_time : 1970-01-01 00:00:00 handler_name : 

Итак, как вы можете видеть, этот контейнер .mp4 имеет видеокодек H.264 и аудиокодек AAC.

Отсутствующий файл ffmpeg.dll для OpenCV не генерирует никаких предупреждений / ошибок в OpenCV 2.3.1, и код не работает. Убедитесь, что у вас есть правильный opencv_ffmpeg * .dll в вашем пути.

Возможно, вы загрузите неправильный файл lib. Как и я, я получаю ту же проблему. Но я могу открыть файл AVI в VC6.0, который использует opencv версию 1.0. Наконец, я считаю, что я использую неправильную библиотеку lib.

В режиме отладки, но я использую opencv_core220.lib и opencv_highgui220.lib И я заменяю их opencv_core220d.lib и opencv_highgui220d.lib Теперь я могу это прочитать.

В OpenCV 2.4.4: есть только opencv_ffmpeg244.dll (release dll), а не opencv_ffmpeg244d.dll (debug dll)

Поэтому попробуйте в режиме компиляции релиза!

Я также сталкиваюсь с той же проблемой. С образцом кода для VideoCapture моя визуальная студийная программа не смогла открыть какой-либо видеофайл. Тогда предложение nimcap работает для меня. «Отсутствующий файл ffmpeg.dll от OpenCV не генерирует никаких предупреждений / ошибок в OpenCV 2.3.1, и код не работает без проблем. Убедитесь, что у вас есть правильный opencv_ffmpeg * .dll в вашем пути».

Скопируйте opencv_ffmpeg.dll в мою проект visual studio /Debug , я могу открыть практически любой видеофайл с VideoCapture.

В Windows x64 вам не нужно ничего переименовывать. Просто поставьте следующее … \ opencv \ build \ x64 \ vc12 \ bin в свой PATH .

Просто измените свой код:

 VideoCapture capture("guitarplaying.avi"); 

к этому:

 CvCapture *input_video = cvCreateFileCapture("guitarplaying.avi"); 

Я просто добавляю к этому, поскольку я провел больше времени, чем я хотел бы признать. Невозможность открыть файл вызвала массу странных исключений.

Если вы обнаружите, что работают абсолютные пути, а относительные пути не работают, необходимо проверить, правильно ли установлен рабочий каталог.

В Visual Studio это Свойства проекта (Свойства конфигурации) -> Отладка -> Рабочий каталог. Я по умолчанию установил мой «$ (ProjectDir)», когда мне действительно захотелось «$ (OutDir)».

Вам нужно просто загрузить для вашего компьютера Xvid из xvid.org, вот и все: http://www.xvid.org/Downloads.15.0.html

Откройте D:\OpenCV\build\x64\vc14\bin и скопируйте opencv_ffmpeg320.dll или opencv_ffmpeg320_64.dll что подходит для вас на основе Windows (x86 or x64) .

opencv_ffmpeg320.dll -> для 32-bit Windows (x86)

opencv_ffmpeg320_64.dll -> для 64-bit Windows (x64)

Вставьте скопированную .dll в C:\Python27\ или любое место, доступное из PATH среды Windows PATH .

Кроме того, вы можете создать папку D:\OpenCV\vendor\ и добавить .dll файл в эту папку, а затем добавить D:\OpenCV\vendor\ в windows environment variables .

  • Отрегулируйте яркость и контрастность BufferedImage в Java
  • Asp.net mvc override OnException в базовом controllerе продолжает распространяться в Application_Error
  • Как получить более 100 результатов с помощью Twitter4j
  • Кто вызывает метод прерывания Java (), если нет?
  • Изменить размер изображения Codeigniter?
  • Пустой массив в Java / обработка
  • Алгоритм обнаружения наличия текста на изображении
  • Как читать текстовый файл в Android?
  • Цвет jpeg-изображения сильно изменяется после просто ImageIO.read () и ImageIO.write ()
  • Преобразование изображения в оттенки серого
  • Выровнять уже захваченные изображения rgb и глубины
  • Давайте будем гением компьютера.