我目前正在开展一个涉及阅读mp4视频文件的项目。 我遇到的问题是它在Windows 7机器中使用Python 2.7(32位),OpenCV 2.4.3(cv2.pyd)。
代码段如下:
try:
video = cv2.VideoCapture("video.mp4")
except:
print "Could not open video file"
raise
print video.grab()
“video.grab()
”始终返回false:表示它不会读取文件“video.mp4
”
但是当我们尝试这个时:
try:
video = cv2.VideoCapture("video.avi")
except:
print "Could not open video file"
raise
print video.grab()
“video.grab()
”返回true:表示它能够读取“.avi
”文件。
另一个是我们在Linux和Mac上试过这个相同的片段,它似乎工作正常,这意味着它能够读取mp4文件和avi文件。
此问题与this problem和this problem类似。两者仍然没有明确可行的答案。
除了使用Linux或Mac进行编程之外,我将不胜感激任何帮助或解决方法,因为我需要在所有三个系统上工作。
答案 0 :(得分:16)
之前我遇到过同样的问题,通过这一步解决了:
检查您的OpenCV python版本
>>> from cv2 import __version__
>>> __version__
'2.4.0'
然后将您的opencv_ffmpeg.dll
复制到C:\Python27\
并将其重命名为与您的OpenCV Python版本相关。在我的情况下,我不得不将其重命名为opencv_ffmpeg240.dll
。
更新:在Windows上,您可以在OpenCV安装的build文件夹中找到opencv_ffmpeg DLL。例如:C:\dev\opencv\build\x86\vc12\bin
然后,只需将opencv_ffmpeg<version>.dll
文件复制并粘贴到Python安装的根文件夹中即可。
答案 1 :(得分:2)
我在Windows 7操作系统下使用OpenCV版本2.4.11和Python 2.7遇到了这个问题。我无法打开和操作mp4文件,但能够打开avi文件。
我的解决方案是从我的OpenCV安装的build文件夹中复制opencv_ffmpeg2411.dll文件,并将其粘贴到我的Python安装的根文件夹中。因此,在我的情况下,DLL文件位于&#34; C:\ dev \ opencv \ build \ x86 \ vc12 \ bin&#34;,然后我将其复制到&#34; C:\ Program Files(x86) \ Python2.7&#34;
答案 2 :(得分:0)
当您的avi编解码器可能受支持时,您的mp4可能正在使用您的系统没有支持的编解码器(或opencv没有支持)。另外如果opencv使用libav进行解码,你应该安装它。
答案 3 :(得分:0)
我的.mpg
视频文件遇到了同样的问题。无法在openCV
中打开它。
我从openCv_ffmpeg330.dll
文件夹中复制了C:\OpenCV\build\bin folder into the c:\python27
。
那很有效!