今天使用python+opencv进行视频的相关操作,出现能正常读取摄像头但是不能正确读取视频文件,经查阅相关资料,最终得以解决。
这个问题很普遍,官方教程的程序下面都提示说请确认ffmpeg或者gstreamer已经正确安装。
解决方式1、找到opencv安装路径下的/sources/3rdparty/ffmpeg文件夹,将文件夹下的opencv_ffmpeg.dll(如果你的系统是32位的)或者opencv_ffmpeg_64.dll(如果你的系统是64位的)复制到python的安装路径下,比如D:\python2.7下,并将文件重命名为opencv_ffmpeg2411.dll(2411是opencv版本号,改成你的对应版本)或者opencv_ffmpeg2411_64.dll(同样2411是opencv版本号)
更详细的设置可参考:http://blog.csdn.net/heyijia0327
注意:如果这样修改后还是无法正常打开视频文件,请查看文件路径中是否使用了“\”,将“\”全部转换成“/”即可,本人弄了大半天,最后发现是这的问题,我对自己也是无语了。在python中使用路径时,最好全用“/”, "\"经常回报错。
2,虽然你的视频文件是.AVI格式,但可能其编码方式opencv无法打开,可以使用VirtualDub1.9.4这个软件转换格式
file->open video file
Video->Filters->Add->convert format->4:2:0 planar YCbCr(YV12)或者32-bit RGB
详情可参考:http://blog.sina.com.cn/s/blog_5728fc490100qq6v.html