我正在使用以下instructions安装的OpenCV 2.4的Python绑定。
我的问题类似于this one,但我需要Windows机器解决方案。
问题:当我尝试使用
时cap = cv2.VideoCapture(0)
print cap.grab()
它工作正常,但以下代码
cap = cv2.VideoCapture(filename)
print cap.grab()
总是返回False。
该文件的路径是正确的,绝对的,没有空格。
我试用了两台装有Windows XP和Windows 7的机器,结果相似。在Linux(Ubuntu)上,它对我来说很好。
答案 0 :(得分:71)
将C:\OpenCV\3rdparty\ffmpeg\
添加到Windows PATH环境变量或将opencv_ffmpeg.dll
从该目录复制到C:\Python27\
或PATH中的目录。或者,使用http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv中的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
答案 1 :(得分:29)
复制 opencv_ffmpeg.dll 对我来说还不够 - 当我使用OpenCV 2.4.6和Python 2.7.5时,我不得不将其重命名为 opencv_ffmpeg246.dll
答案 2 :(得分:10)
我首先尝试复制,然后更改Windows的Path环境..直到我将openCv_ffmpeg245.dll的名称更改为openCV版本2.4.5和python 2.7才开始工作。 (注意** 245.dll来自opencv版本2.4.5)
答案 3 :(得分:8)
对于64位版本,将opencv_ffmpeg_64.dll重命名为opencv_ffmpeg249_64.dll将249更改为opencv版本。
答案 4 :(得分:6)
对于64位环境下的OpenCV 3.0.0,请复制opencv_ffmpeg_64.dll并将其重命名为opencv_ffmpeg300_64.dll。
还要将此路径添加到PATH环境变量中,以使其在Java下使用OpenCV。
答案 5 :(得分:5)
更新:对于OpenCV 2.4.9仍然如此,复制所有文件,并重命名dll opencv_ffmpeg249.dll
答案 6 :(得分:4)
我遇到了与python 2.7和opencv 2.4.10相同的问题。我将opencv_ffmpeg2410_64.dll文件从C:\ Applications \ opencv \ build \ x64 \ vc10 \ bin复制到python路径中(我的是C:\ Users \ mohammad \ Anaconda)并且它已经解决了!
答案 7 :(得分:3)
首先我使用windows8.1 32bit和opencv 2.4.10
我使用由Logicool C270制作的文件test1.wmv
遇到了同样的问题
我尝试使用由Digital Camera(Canon SX160)制作的其他文件test2.mov
。
因此,我可以test2.mov
添加路径C:\opencv\build\x86\vc12\bin
但我无法播放test1.wmv.
所以我尝试使用VLC(Video for youtube HD
)将格式test1.wmv更改为test1a.mp4。
然后我可以玩test1a.mp4.
我在Ubuntu 14.04 LTS上试过test1.wmv
,然后我就可以轻松玩了
在windows8.1和Ubuntu 14.04 LTS之间的默认ffmpeg二进制文件上可能会出现一些差异。
答案 8 :(得分:0)
对于anaconda环境 从C:\ Python27 \拷贝 opencv_ffmpeg249_64.dll 根据您的opencv正确版本重命名其版本 并过去了 的 C:\用户\ KHALID \ Anaconda2 \库\ BIN 强>