Python Opencv2 Opencv3 videoCapture 视频读取失败解决办法

#Authored by Monana

Contact me via [email protected]



opencv中我们经常遇到这样的问题,

比如,类似这段代码无法运行,检查是VideoCapture读取不到视频,该怎么办呢?

import cv2

videoCapture=cv2.VideoCapture('myinput.avi')
fps=videoCapture.get(cv2.CAP_PROP_FPS)
size=(int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
videoWriter=cv2.VideoWriter('out.avi',cv2.VideoWriter_fourcc('I','4','2','0'),fps,size)

success,frame=videoCapture.read()
while success:
    videoWriter.write(frame)
    success,frame=videoCapture.read()
    #无法运行



1.你的opencv是否安装成功?这点很容易验证,至少不要连opencv都没安装成功就运行别人的代码吧。


2..你是否输入cv2.waitKey(0)这句命令?注意K大写,不输入也是运行不了的。


3.你的working directory即工作路径是否正确?

videoCapture=cv2.VideoCapture('myinput.avi')


这里'myinput.avi'是工作目录下的文件,比如我现在的工作目录

C:\Users\thinkpadx1\Anaconda2\MProject\FaceRecognition

那么我的视频地址就是

C:\Users\thinkpadx1\Anaconda2\MProject\FaceRecognition\myinput.avi


或者你可以直接videoCapture=cv2.VideoCapture('C:\Users\thinkpadx1\Anaconda2\MProject\FaceRecognition\myinput.avi ')


4.以上都没问题,还不可以,我们继续想办法!




首先,在Python输入如下命令获得你opencv的版本,

help(cv2)#检查opencv版本

 得到版本号后,对应你的版本,有下面两类解决方法: 
 



·我是OpenCV2,解决办法:


这里我是参考StackOverFlow上OpenCV2.4解决办法

http://stackoverflow.com/questions/11699298/opencv-2-4-videocapture-not-working-on-windows


复制 D:\openCV\3rdparty\ffmpeg\下的全部opencv_ffmpeg.dll文件到D:\python27或者D:\anaconda等文件夹下,

复制的时候还要整改名字,比如你的版本是opencv2.410,操作系统64位,那么就改成opencv_ffmpeg2410_64.dll




·我是OpenCV3,解决办法:


复制D:\opencv\opencv\build\x64\vc14\bin下所有前缀包含opencv_ffmpeg.dll的文件到D:\python27或者D:\anaconda等文件夹下。

这个vc14还是vc12等看你的编译器是什么,可以都复制一下试试。


例如,我的版本是Opencv3.10那么我找到文件是


opencv_ffmpeg310_64.dll

opencv_ffmpeg310.dll

opencv_ffmpeg310d.dll


复制到上面说的文件夹下就成功啦~




猜你喜欢

转载自blog.csdn.net/serena9636/article/details/52525379