首页 > 代码库 > OpenCV打不开摄像头的替代解决方案

OpenCV打不开摄像头的替代解决方案

一般来说,opencv要打开摄像头的话,可以使用:VideoCapture captRefrnc(0); 这类方式。

 

重装系统之后,为了避免安装巨大的visual studio,改成了codeblocks,另外opencv也采用cmake+codeblocks的方式编译而成,但是采用默认设置编译出来的opencv无法开启笔记本电脑的摄像头,尝试其他解决方法之后,想到了之前用过的 K-Lite Codec Pack 配合avisynth编写avs脚本解决解码器的思路,利用K-Lite Codec Pack+avs脚本来打开摄像头。

 

如果你也遇到opencv无法打开摄像头问题而无法解决,不妨尝试这种方案。

 

准备工作:

1:安装K-Lite Codec Pack,选择full版本安装,这样可以得到后续要用的GraphStudioNext

http://www.codecguide.com/download_kl.htm

 

2:安装avisynth

http://sourceforge.net/projects/avisynth2/files/AviSynth%202.5/

 

3:安装avisynth-as-directshow-capture

https://github.com/rdp-org/avisynth-as-directshow-capture

 

安装完成之后,打开GraphStudioNext

 

 

进入程序后,用Ctrl+F快捷键,或者点击Graph->Insert Filter

找到你的摄像头,一般来说会有cam关键字,我的叫做Intergrated Webcam,选择它,并点击insert

选择好你的Cam,之后用File->Save As Graph,保存出.grf文件,比如我的是:E:\cam.avs

下一步便是编写avs脚本打开这个grf文件就行了

打开记事本,输入directshowsource("E:\cam.GRF", audio=False, framecount=1000000, fps=10) 

保存成filename.avs

之后用Media player classic打开这个文件测试是否成功,如果能用Media player classic 打开摄像头就是成功了。

 

之后只需要像打开视频文件一样在opencv里打开这个avs文件就可以了:

VideoCapture captRefrnc("E:\cam.avs");

OpenCV打不开摄像头的替代解决方案