OpenCV 2.4 VideoCapture не работает в Windows

Я использую привязки Python к OpenCV 2.4, установленным со следующими инструкциями.

Моя проблема аналогична этой, но мне нужно решение для Windows.

Проблема: когда я пытаюсь использовать

cap = cv2.VideoCapture(0)
print cap.grab()

он работает нормально, но следующий код

cap = cv2.VideoCapture(filename)
print cap.grab()

всегда возвращайте False.

Путь к файлу правильный, абсолютный и не имеет пробелов.

Я пробовал на двух машинах с Windows XP и Windows 7 с аналогичными результатами. В Linux (Ubuntu) он отлично работает для меня.

Ответ 1

Добавьте C:\OpenCV\3rdparty\ffmpeg\ в переменную среды Windows PATH или скопируйте opencv_ffmpeg.dll из этого каталога в C:\Python27\ или в каталог, который находится в PATH. Кроме того, используйте двоичные файлы OpenCV из http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv.

Также может потребоваться переименование файла opencv_ffmpeg.dll.

Для версии OpenCV X.Y.Z
opencv_ffmpeg.dll == > opencv_ffmpegXYZ.dll

Для 64-битной версии OpenCV X.Y.Z
opencv_ffmpeg.dll == > opencv_ffmpegXYZ_64.dll

Ответ 2

Копировать opencv_ffmpeg.dll было недостаточно для меня - мне пришлось переименовать его в opencv_ffmpeg246.dll, когда я использовал OpenCV 2.4.6 с Python 2.7.5

Ответ 3

Сначала я попробовал копирование, а затем изменил среду окружения Windows. Это не сработало, пока я не изменил имя на opencv_ffmpeg245.dll для моего openCV версии 2.4.5 и python 2.7. (извещение ** 245.dll из opencv версии 2.4.5)

Ответ 4

Для 64-разрядных версий переименуйте opencv_ffmpeg_64.dll в opencv_ffmpeg249_64.dll. Измените 249 на вашу версию opencv.

Ответ 5

Для OpenCV 3.0.0 на 64-битной среде скопируйте файл opencv_ffmpeg_64.dll и переименуйте его в opencv_ffmpeg300_64.dll.

Также добавьте этот путь к переменной среды PATH, чтобы он работал с OpenCV под Java.

Ответ 6

Обновление: это все еще верно для OpenCV 2.4.9, скопировать все файлы и переименовать dll opencv_ffmpeg249.dll

Ответ 7

У меня была такая же проблема с python 2.7 и opencv 2.4.10. Я скопировал файл opencv_ffmpeg2410_64.dll из C:\Applications\opencv\build\x64\vc10\bin в путь python (мой находится в C:\Users\mohammad\Anaconda), и он был решен!

Ответ 8

Сначала я использую windows8.1 32bit и opencv 2.4.10.
Я столкнулся с такой же проблемой, чтобы использовать файл test1.wmv, который был создан Logicool C270.
Я попытался использовать другой файл test2.mov, который был сделан цифровой камерой (Canon SX160). Поэтому я могу сыграть test2.mov, чтобы добавить путь C:\opencv\build\x86\vc12\bin.
Но я не могу играть test1.wmv.
Поэтому я пытаюсь изменить формат test1.wmv на test1a.mp4 с помощью VLC (до Video for youtube HD).
Тогда я могу играть test1a.mp4.
Я пробовал test1.wmv на Ubuntu 14.04 LTS, тогда я могу играть легко.
Может возникнуть некоторая разница в двоичном файле ffmpeg по умолчанию между windows8.1 и Ubuntu 14.04 LTS.

Ответ 9

Для среды anaconda скопируйте opencv_ffmpeg249_64.dll из C:\Python27 \ переименуйте его версию в соответствии с вашей версией opencv и мимо него C:\Users\KHALID\Anaconda2\Library\Bin