OpenCV 2.4 VideoCapture no funciona en Windows

Estoy usando enlaces de Python para OpenCV 2.4 instalado con las siguientes instrucciones .

Mi problema es similar a este , pero necesito la solución de la máquina de Windows.

Problema: cuando trato de usar

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

funciona bien, pero el siguiente código

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

siempre devuelve falso.

La ruta al archivo es correcta, absoluta y no tiene espacios.

Probé en dos máquinas con Windows XP y Windows 7 con resultados similares. En Linux (Ubuntu) funciona bien para mí.

Agregue C:\OpenCV\3rdparty\ffmpeg\ a la variable de entorno PATH de Windows o copie opencv_ffmpeg.dll desde ese directorio a C:\Python27\ o a un directorio que esté en la PATH. Alternativamente, use los binarios de OpenCV de http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv .

También puede ser necesario opencv_ffmpeg.dll el nombre del archivo opencv_ffmpeg.dll .

Para versión OpenCV XYZ
opencv_ffmpeg.dll ==> opencv_ffmpegXYZ.dll

Para la versión OpenCV de 64 bits XYZ
opencv_ffmpeg.dll ==> opencv_ffmpegXYZ_64.dll

Copiar opencv_ffmpeg.dll no fue suficiente para mí: tuve que cambiarle el nombre a opencv_ffmpeg246.dll , cuando usé OpenCV 2.4.6 con Python 2.7.5

Primero intenté copiar y luego cambiar el entorno de ruta de Windows … no funcionó hasta que cambié el nombre a opencv_ffmpeg245.dll para mi versión de openCV 2.4.5 y python 2.7. (aviso ** 245.dll es de opencv versión 2.4.5)

Para versiones de 64 bits, cambie el nombre de opencv_ffmpeg_64.dll a opencv_ffmpeg249_64.dll. Cambie 249 a su versión de opencv.

Para OpenCV 3.0.0 en el entorno de 64 bits, copie opencv_ffmpeg_64.dll y cambie su nombre por opencv_ffmpeg300_64.dll.

También agregue esta ruta a su variable de entorno PATH para que funcione con OpenCV en Java.

Actualización: Esto sigue siendo cierto para OpenCV 2.4.9, copie todos los archivos y cambie el nombre de la dll opencv_ffmpeg249.dll

Tuve el mismo problema con python 2.7 y opencv 2.4.10. Copié el archivo opencv_ffmpeg2410_64.dll de C: \ Applications \ opencv \ build \ x64 \ vc10 \ bin en la ruta de python (la mía está en C: \ Users \ mohammad \ Anaconda) y ¡se resolvió!

Al principio utilizo windows8.1 32bit y opencv 2.4.10.
Me enfrenté con el mismo problema para usar el archivo test1.wmv que fue creado por Logicool C270.
Intenté usar otro archivo test2.mov que fue creado por una cámara digital (Canon SX160). Entonces puedo jugar test2.mov para agregar la ruta C:\opencv\build\x86\vc12\bin .
Pero no puedo jugar test1.wmv.
Entonces trato de cambiar el formato test1.wmv a test1a.mp4 usando VLC (a Video for youtube HD ).
Entonces puedo jugar test1a.mp4.
test1.wmv en Ubuntu 14.04 LTS, luego puedo jugarlo fácilmente.
Puede ocurrir alguna diferencia en el binario ffmpeg predeterminado entre windows8.1 y Ubuntu 14.04 LTS.

Para el entorno de anaconda, copie opencv_ffmpeg249_64.dll de C: \ Python27 \ cambie el nombre de su versión de acuerdo con su versión correcta de Opencv y pásela a C: \ Users \ KHALID \ Anaconda2 \ Library \ bin