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");

时间: 09-16

OpenCV打不开摄像头的替代解决方案的相关文章

OpenCV学习1-----打开摄像头并在画面上添加水印

一直对视频或者图像添加水印很感兴趣,查找资料后用OpenCV尝试了一下. 记录下来. 1.首先是打开摄像头. 找到OpenCV官方文档给出的例子. 例子中实现的是,打开摄像头,并对画面进行高斯滤波,使用canny算子检测直线边缘. #include "opencv2/opencv.hpp" using namespace cv; int main(int, char**) { VideoCapture cap(0); // open the default camera if(!cap

基于opencv和mfc的摄像头采集代码(GOMFCTemplate2)

基于opencv和mfc的摄像头采集框架(GOMFCTemplate2) 编写带界面的图像处理程序,选择opencv+mfc是一种很好的选择:在读取摄像头数据方面,网上的方法很多,其中shiqiyu的camerads的方法是较好的. 基于现有资料,通过在实际项目中的积累,我总结出来一套结合opencv和mfc的摄像头采集框架.具有以下特点: 1.基于directshow,兼容性好,速度快.到目前为止,无论是工业相机还是普通相机,没发现不兼容的: 2.摄像头部分通过线程读取,保证界面的运行流畅:

dropbox 死掉后 IOS 7.1 应用发布替代解决方案

由于大家都知道的原因Dropbox 挂掉了,免费的 https文件分享链接没有了,广大通过 dropbox https 分享链接来发布ios应用的童鞋悲剧了 .今天就给大家支个招儿. 分析  ios 7.1 安装链接 格式  itms-services://?action=download-manifest&url=https://xxx.plist 1.必须是 https 的安全链接. 2.链接是以 .plist 结尾 3.最重要的一点 这个 https://xxx.plist 必须要能够直接

Android模拟屏幕点击input tap替代解决方案

动机解释 本来直接使用 adb shell -> input 即可模拟 键盘事件,触屏事件keyevent ,text,tap 但是手上的这台目标Android机4.0.3系统的input只支持text和keyevent,不支持tap,无法模拟触屏点击事件. usage: input [text|keyevent] input text <string> input keyevent <event_code> 于是开始寻找模拟触屏的替代解决方案. 最新的Android API

OpenCV 入门级之USB摄像头采集[转]

前面两篇博文呢,介绍了 OpenCV 的环境搭配以及最基本的几个函数的使用, 而这一篇博文则还是延续以 Demo 讲述 OpenCV API 的方式, 因为有些 API 是用得很多的,所以必须要熟练,而至于其他的一些比较罕见的 API , 则可以通过在 OpenCV 官网上下载必要的 API 文档来熟悉就 OK 了, 对于在前面呢,基本上介绍了 IplImage 以及 CvCapture 的使用,下面的 Demo 呢, 其实和前面差不多,只不过,我是通过摄像设备捕捉到帧后进行的处理, 其实这个并

【04】Opencv读视频和摄像头

一个简单读取视频文件代码: #include"highgui.h" int main() { cvNamedWindow("flv"); //结构体Cv的C是大写的  函数cv的c是小写的 CvCapture* capture = cvCreateFileCapture("D:\\BaiduYunDownload\\2015-03-13远程关机\\远程关机.flv"); IplImage*frame; while (1) { frame = cv

IE保护模式下ActiveX控件打不开共享内存的解决方案

原文:http://www.cppblog.com/Streamlet/archive/2012/10/25/193831.html 感谢溪流漫话的投递 IE保护模式下,ActiveX控件会打不开别的进程创建的共享内存,原因是IE运行在低完整性级别权限下,一般应用程序运行在中完整性级别.别的应用程序创建的共享内存,即使赋予Everyone权限,ActiveX控件仍然会打不开. 解决方案:创建共享内存的时候,设置下完整性级别: bool SetLowLabelToKernelObject(LPCT

JAVA B/S通过摄像头采集图片信息解决方案。

在浏览器上调用摄像头.有ACTIVX,FLASH,HTML5,JAVA的.其中ACTIVEX只支持IE不去考虑,HTML5低版本浏览器不支持同样放弃,剩下只有FLASH了.JAVA要重新开发,没时间.网上找了很久,终于找到一个JQUERY的插件可以实现调动视频.上代码: 1.官网下载相关文件 http://www.xarg.org/project/jquery-webcam-plugin/ 2.前端脚步: <script> $(function() { var swfpah="${p

QT creator中使用opencv采集摄像头信息

之前在QT creator上成功编译了opencv,由于课题需要,需要采集摄像头的信息.故搜集了网上的一些资料,依葫芦画瓢的照着做了一下,终于简单的成功采集了信息. 打开QTcreator,新建一个widget工程. 在界面上放两个label 分别用来显示摄像头采集到的数据和照的照片. 在widget.h中的源代码如下: #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QImage> #include &