opencv Direct X Show 多摄像头

配置opencv:

    1.下载opencv,安装,安装的时候还要注意选择增加环境变量。

    2.检查C:/Program Files/OpenCV/bin是否已经被加入到环境变量PATH,如果没有,需要手动加入。

    3.配置vc :检查C:/Program Files/OpenCV/bin是否已经被加入到环境变量PATH,如果没有,请加入:

           “C:/Program Files/OpenCV/lib”

    4.然后选择include files,在下方填入路径:

    C:/Program Files/OpenCV/cxcore/include

    C:/Program Files/OpenCV/cv/include

    C:/Program Files/OpenCV/cvaux/include

    C:/Program Files/OpenCV/ml/include

    C:/Program Files/OpenCV/otherlibs/highgui

    C:/Program Files/OpenCV/otherlibs/cvcam/include

    5.项目设置:

    每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project->Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上:cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib

配置dshow:

    1.从 msdn.microsoft.com/directx/ 下载 DirectX,(文件很大,但是可以只下载部分)。

    2.带例子安装。

    3.打开项目:<DirectXSDKInstallFolder>/samples/C++/DirectShow/BaseClasses/baseclasses.{dsw|sln}. (如果没有这个文件,要么是你没有下载样例,要么是路径不对。如果是后者,寻找 streams.h 并在同一个文件夹下打开一个 workspace 文件。)

    4.编译建立库的 Release 和 Debug 版本。

    5.将产生的库 (在 DirectX 9.x 中,分别叫 strmbase.lib 和 strmbasd.lib) 拷贝到目录 <DirectXSDKInstallFolder>/lib 下。

 

配置工程:

1. 在 Developer Studio 添加路径: 添加 <DirectXSDKInstallFolder>/include <DirectXSDKInstallFolder>/samples/C++/DirectShow/BaseClasses 到 includes' 搜索路径中 (在 Developer Studio 6.0 情况下是 Tools->Options->Directories->Include files)

2. 添加 <DirectXSDKInstallFolder>/lib 到库搜索路径中 (在 Developer Studio 6.0 情况下是 Tools->Options->Directories->Library files) 注意:将上面增加的东东添加到最顶端,否则还会出现编译或链接错误。因为 Developer Studio 6.0 包含了一些老版本的 DirectX 头文件和库文件,它们与新版本有冲突。

 3. 下载ARFrameGrabber 类,从http://www.opencv.org.cn/images/b/b5/Directshow_Opencv.zip

 4. 解压缩后把 ARFrameGrabber.h 和 ARFrameGrabber.cpp 拷贝到到工程中,然后再从vc打开工程,把这两个文件添加进来。

 

   基本上都弄好了,所以,现在可以新建一个按钮响应函数,把以下代码拷贝过去,编译,看看是否成功。如果成功了,就配置好了。

static ARFrameGrabber frameGrabber;  //声明对象IplImage ds_frame;frameGrabber.Init(0, true);  //设置支持directshow的设备编号,从0开始frameGrabber.SetFlippedImage(true); //图像是否翻转for(;;)    {       IplImage *frame =0;       frameGrabber.GrabByteFrame(); //获取一帧       BYTE *myBuffer = frameGrabber.GetByteBuffer(); //得到图像的缓冲        int width = frameGrabber.GetWidth();       int height = frameGrabber.GetHeight();         int stride  = (width * sizeof( RGBTRIPLE ) + 3) & -4;       cvInitImageHeader( &ds_frame, cvSize(width, height), 8, 3,IPL_ORIGIN_BL, 4 ); //创建iplimage       ds_frame.widthStep = stride;          cvSetData( &ds_frame, myBuffer, stride );  //copy数据       frame = &ds_frame;        /* 视频分析部分 */         }

上面是转的,经检验,可有效支持多摄像头,不过为什么我的release才好使,debug不好使呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值