使用Python中的OpenCV从文件打开视频

时间:2016-03-23 14:23:42

标签: python opencv ffmpeg

我正在尝试将OpenCV2与我的Conda环境一起用于Python 2.7。

我的安装与上面描述的基本相同 this question

我像这样检索了OpenCV:

conda install --channel https://conda.anaconda.org/menpo opencv3

我可以导入库cv2并打印版本,即3.1.0。到现在为止还挺好。我甚至可以加载图像并显示它:

import cv2

img = cv2.imread('desertfloor.jpg')
cv2.imshow('foo',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

这很好用。但是当我在同一目录中加载视频时:

vid = cv2.VideoCapture('bbb.avi') # Big Buck Bunny
returnval,frame = vid.read()
print returnval

返回的值为False,告诉我框架没有正确返回。当我检查vid.isOpened()时,它也是假的。由于它没有返回错误,因此很难说出发生了什么。我听说如果没有正确安装(无论这意味着什么),ffmpeg可能会引起一些问题,但我无法判断这是不是在这里发生了什么。

有谁可以告诉我为什么视频没有正常打开?

1 个答案:

答案 0 :(得分:1)

错误很可能是由于缺少编解码器的原因。如果缺少编解码器而不是显示实际错误,VideoCapture只会显示 False

如果使用预先构建的二进制文件,则 Windows 中的 Python 。第三方ffmpeg不可用,因为它应该从源代码构建。出于同样的原因,我提供了预构建二进制文件的链接,使用OpenCV兼容的API构建和包装。

https://drive.google.com/open?id=0Bzxd9GL63enNMEpPV0lWRng1VW8

二进制文件是为opencv-3.0.0构建的,并根据OpenCV版本重命名。

For 32-bit architecture, OpenCV version X.Y.Z -> opencv_ffmpegXYZ.dll
For 64-bit architecture, OpenCV version X.Y.Z -> opencv_ffmpegXYZ_64.dll

复制这个重命名的文件,在 c:\ Python27 \ 中,或安装python的地方(如果使用Python的任何开源发行版,如Anaconda,则不同)。此VideoCapture应该可以正常工作。

希望这会有所帮助!!