OPENCV读取摄像头

转载地址:http://www.xue5.com/Developer/Software/678737.html

OpenCV具有强大的图像处理功能,处理视频也是毫不逊色。只是其自带的HighGUI并非是具有工业强度的模块,不适合最终提供给客户,仅仅是方便程序开发阶段的调试。其中跟视频捕获相关的cvCreateCameraCapturecvCaptureFromCAM函数可以方便的从摄像头捕获视频,但这两个函数在Windows中都是由较为低效的VFW机制实现的,不适合在最终产品中使用。

Windows中使用DirectShow可以高效的从摄像头捕获视频,但使用较为复杂。OpenCV中文网的YuShiQi提供了一个基于DirectShow实现的摄像头捕获类,但试用后效果一般,速度并没有明显的提高。

新版的OpenCVOpenCV2.0及以后版本)提供了第三方的VideoInput库,该库实现了基于DirectShow的视频捕获,使用方便、功能强大,速度也很快。另外还有一个意外发现——腾讯QQ的视频捕获貌似用的也是这个库哦~~

好了,下面就说说如何使用这个库

如果你的OpenCV版本低于2.0,请先去http://muonics.net/school/spring05/videoInput/

下载VideoInput,我这里需要翻才能上去。如果使用2.0及以后版本则自带该库。

首先需要在代码中包含VideoInput的头文件

#include <videoInput.h>

         这个文件的默认路径是C:\OpenCV2.1\3rdparty\include

         静态链接库的默认路径是C:\OpenCV2.1\3rdparty\lib

         请先设置IDE中头文件和库文件的搜索路径。

 

下面给出一个读取并显示摄像头画面的实例

int width=320;

int height=240;

IplImage *pRgb=cvCreateImage(cvSize(width,height),IPL_DEPTH_8U, 3);

videoInput video;//创建视频捕获对象

video.setupDevice(0, width, height);//配置设备

video.showSettingsWindow(0);//该语句可以显示视频设置窗口,可以去掉

while(1)

{

   if(video.isFrameNew(0))

   {

        video.getPixels(0,(unsigned char *)pRgb->imageData, false, true);//获取一帧

        //cvFlip(pRgb,NULL,1);//加上这句就水平翻转画面

        char c=cvWaitKey(1);

        if(c==27) break;//ESC退出

        cvShowImage(Video, pRgb);

   }

}


编译时会出现找不到“atlthunk.lib”,解决办法:项目-属性-连接器-输入-忽略特定库atlthunk.lib,然后编译就没问题了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值