前一段时间被拉去做硬件,组装红外摄像头供人脸识别软件使用(一段巨坑爹的经历)。当时遇到了巨坑爹的问题是电脑接上摄像头的图像采集卡后在QQ上都打不开,更不要说在vc6.0里用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
文章知识点与官方知识档案匹配,可进一步学习相关知识OpenCV技能树视频分析光流11096 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!