首先说一下环境,windows 8.0 64位系统,OpenCV版本为2.4.7, python 版本为2.7.6,IDE为 64位 Anaconda
函数代码片段为:
videoCapture = cv2.VideoCapture(currentVideoName)
#获得码率及尺寸
fps = videoCapture.get(cv2.cv.CV_CAP_PROP_FPS)
size = (int(videoCapture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),\
int(videoCapture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))
success, frame = videoCapture.read()
遇到的问题:
当cv2.VideoCapture的参数为摄像头的编号(例如cv2.VideoCapture(0))时没有问题,success为true,但是当参数为视频的名字(例如cv2.VideoCapture(r’E:\test.avi’))时就出现问题,不提示出错,但是success值为false。
问题解决方法:
网上查来查去汉语的说明不过是路径有问题,有效的解决方法没有。有人说是opencv不适用“\”,应该把cv2.VideoCapture(r’E:\test.avi’)改为cv2.VideoCapture(r’E:/test.avi’)。事实证明这种方式不可行。好在国外也有人遇到了这种问题,并给出了可行的解决方法。解决方法是这样的(亲测可行):
- 首先将 C:\opencv\sources\3rdparty\ffmpeg 添加到系统目录
- 然后将C:\opencv\sources\3rdparty\ffmpeg下的opencv_ffmpeg.dll 和opencv_ffmpeg_64.dll 重命名为opencv_ffmpeg247.dll 和 opencv_ffmpeg247_64.dll 。注意这里的命名方式与opencv版本有关,我的是2.4.7版,就命名为247.dll和247_64.dll,如果你的版本是2.4.10,则命名为 opencv_ffmpeg2410.dll 和 opencv_ffmpeg2410_64.dll
- 系统变量改变后在cmd中输入“set path = c”刷新系统变量使其生效,然后重新打开工程就可以了。