自己组装摄像头软件opencv无法打开的问题

前一段时间被拉去做硬件,组装红外摄像头供人脸识别软件使用(一段巨坑爹的经历)。当时遇到了巨坑爹的问题是电脑接上摄像头的图像采集卡后在QQ上都打不开,更不要说在vc6.0里用opencv打开了。经过在中发市场几番奔波后,终于发现了简单便宜实用的一款采集卡,就是下面这个:

自己组装摄像头软件opencv无法打开的问题

这个采集卡很好用,插上就能用,不像我之前试的几款4路的采集卡又贵又要驱动又不好使。。总之这种问题是没技术含量的坑爹问题,但是又会浪费你很多时间,所以如果您也碰到这类问题,直接去淘宝花三四十元买一个这个采集卡直接解决问题吧。


用了这个采集卡后,接上电脑用如QQ或其他利用摄像头的软件都可以打开你自己组装的摄像头了。但是,如果你是一位开发者,可能还需要利用opencv中的函数打开摄像头并捕捉每一帧图像,这时你可能又会碰到新问题了。就是opencv1.0的函数打开摄像头仍读不到摄像头图像!

仔细调试的话,会发现cvCaptureFromCAM(0)函数能捕捉到摄像头,但cvQueryFrame(capture)却捕捉不到frame(为空)。

经过对比实验发现,在VS2010(配opencv2.3.1),以上两个函数均好用,能读取摄像头视频;但在vc++6.0(配opencv1.0),便出现捕捉视频帧的函数捕捉不到的情况(我们那原始软件就是在这个vc++6.0下开发的,唉)。


解决方案:经过一番查找网上的解释,终于发现,原因是老版本的opencv1.0采用的是Video for Windows (VFW)的视频读写框架,而新版本的opencv采用DirectShow这一通用读写框架。而现在用的视频采集卡支持通用框架(如DirectShow,V4L),但可能不支持VFW了,所以才遇到我之前遇到的情况,摄像头内容无法被软件读取到!

    所以,不能再用之前的两个opencv函数了,去网上下载CameraDS包(基于DirectShow),利用类CCameraDS实现摄像头的读取,Done!使用极为简单,这里不赘述了,
   详细参见:http://hi.baidu.com/sail2011/item/9d0d736d60b9540fa1cf0f96

    

最后,如果你也碰到类似问题并纠结很久,那我深表同情,因为这些都是些浪费生命的问题。。如果这篇blog能给你带来帮助,那作者感到无线欣慰~

文章知识点与官方知识档案匹配,可进一步学习相关知识OpenCV技能树视频分析光流11096 人正在系统学习中

来源:Sean_SJTU

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2013年11月10日
下一篇 2013年11月11日

相关推荐