7

我目前正在从事一个涉及读取 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 文件。

这个问题类似于这个问题这个问题。两者都还没有一个明确可行的答案。

除了仅使用 Linux 或 Mac 进行编程之外,我将不胜感激任何帮助或解决方法,因为我需要它才能在所有三个系统上工作。

4

4 回答 4

15

我之前遇到过同样的问题,通过这一步解决:

检查您的 OpenCV python 版本

>>> from cv2 import __version__
>>> __version__
'2.4.0'

然后将您的复制opencv_ffmpeg.dllC:\Python27\并将其重命名为相关的 OpenCV Python 版本。就我而言,我不得不将其重命名为opencv_ffmpeg240.dll.

更新:在 Windows 上,您可以在 OpenCV 安装的 build 文件夹中找到 opencv_ffmpeg DLL。例如:C:\dev\opencv\build\x86\vc12\bin

然后,只需将文件复制并粘贴opencv_ffmpeg<version>.dll到 Python 安装的根文件夹中。

于 2014-04-02T09:17:31.923 回答
1

我在 Windows 7 操作系统下使用 OpenCV 版本 2.4.11 和 Python 2.7 遇到了这个问题。我无法打开和操作 mp4 文件,但能够打开 avi 文件。

我的解决方案是从我的 OpenCV 安装的 build 文件夹中复制 opencv_ffmpeg2411.dll 文件,并将其粘贴到我的 Python 安装的根文件夹中。因此,就我而言,DLL 文件位于“C:\dev\opencv\build\x86\vc12\bin”中,我将其复制到“C:\Program Files(x86)\Python2.7”。

于 2015-05-24T15:51:32.633 回答
0

您的 mp4 可能具有您的系统不支持的编解码器(或 opencv 不支持),而您的 avi 编解码器可能受支持。此外,如果 opencv 使用 libav 进行解码,您应该安装它。

于 2012-12-15T23:46:38.080 回答
0

我的.mpg视频文件也有同样的问题。无法打开它openCV

openCv_ffmpeg330.dllC:\OpenCV\build\bin folder into the c:\python27文件夹中复制了。

那行得通!

于 2017-10-24T12:33:18.003 回答