2009年10月16日 在前段时间,我写了一个关于DirectShow在VS2008中使用的文章。当然,我当时使用的是在vs2008 中自带的 WinSDK6.0a,而没有用CCameraDS中带有的DirectShow。问题是解决了,但有一点比较麻烦的,是要修改 WinSDK6.0a中的qedit.h, 引用: DirectShow在vs2008 Vista中的使用 再修改qedit.h 中引用 dxtrans.h 的部分,要求注释掉 #include "oaidl.h" #include "ocidl.h" //#include "dxtrans.h" #include "amstream.h" 在编译后,编译提示就会有一句: Topile qedit.h you must install the DirectX 9 SDK, to obtain the dxtrans.h header. 这样的提示,虽然暂时还没有发现因此改动而引起的错误,但是将来用SDK时还是有可能有问题的。 今天看opencv中文网站 时发现在4月份时CCameraDS又更新了程序,使得函数OpenCamera能够直接控制 被打开摄像头的分辨率,比较方便,哈哈,更新程序好了。这次就直接使用CCameraDS自带的DirectShow。 参考了网上的一篇文章《 OpenCV学习笔记(6)基于 VC OpenCV DirectShow 的多个摄像头同步工作》 // 使用说明: // 在 VC6 开发环境下的使用说明: // 1. 将CameraDS.h CameraDS.cpp以及目录DirectShow复制到你的项目中 // 2. 菜单 Project->Settings->Settings for:(All configurations)->C/C ->Category(Preprocessor)->Addit ional include directories // 设置为 DirectShow/Include // 3. 菜单 Project->Settings->Settings for:(All configurations)->Link->Category(Input)->Additional library directories // 设置为 DirectShow/Lib // 在 VS2005/2008 开发环境下的使用说明: // 1. 将CameraDS.h CameraDS.cpp复制到你的项目中 // 2. 将CameraDS附带的DirectShow目录复制到你的opencv根目录下。 // 3. 菜单Tools–>Options–>Projects and Solutions–>VC Directories–>Show Directories for->Include Files, // 把(你的opencv根目录)/DirectShow/Include添加到 // $(VCInstallDir)PlatformSDK/include和$(FrameworkSDKDir)include之下的任意位置,(最简单就是把它下移到最下面) // 4. 菜单 Tools–>Options–>Projects and Solutions–>VC Directories–>Show Directories for->Library Files, // 把(你的opencv根目录)/DirectShow/Lib添加进出就可以了。也可参考使用说明3。 // 5. 最后,把 Project->Properties->Configuration Properties–> C/C ->Common->Additional Include Directories里面的 // 原来的内容DirectShow/Include 删除, // 同样的,把 Project->Properties->Configuration Properties–> Linker ->Common->Additional Library Directories里面的 // 原来的内容DirectShow/Lib 删除,然后重新编译。 至于为什么这样做,文章中也清晰说明,也有另一种方案解决。 引用: 在编译以上程序时,可能会出现以下几种错误(参见 http://topic.csdn/u/20081022/12/30fb745f-332b- 42f7-bbee-02a760c48132.html): 1> ../../../winnt.h(222) : error C4430: missing type specifier - int assumed. Note: C does not support 2> ../../../winnt.h(222) : error C2146: syntax error : missing ';' before identifier 'PVOID' 3> ../../../winnt.h(5940) : error C2146: syntax error : missing ';' before identifier 'Buffer' 对于第1类错误,可以用wd4430来解决,具体的在Project -> Properties -> Configuration Properties -> Linker -> Command Line的 Additional Options 中添加‘/wd4430’ 即可。 对于第2类错误,一般可通过调整 DirectShow/Include 在 Tools -> Options -> Projects and Solutions -> VC Directories -> Show Directories for –> Include Files 中的位置(把它下移到最下面),然后把 Project -> Properties -> Configuration Properties –> C/C 中的 Additional Include Directories 里面的内容(../../../../include)删掉,重新编译,PVOID的错误就会消失,原因如下: POINTER_ 是一个宏,在位编译下起作用,它包含在SDK目录下的BASETSD.H中(Microsoft Visual Studio 8/VC/PlatformSDK/Include/basetsd.h(23):#define POINTER_ __ptr),但DXSDK自己也带了一个basetsd.h,里面没有定义POINTER_,从而导致出错,只需要改变 include files 的优先级即可。 当然,也可以改写 winnt.h 中的代码,在下面这两行: typedef void *PVOID; typedef void *POINTER_ PVOID; 之前增加一行: #define POINTER_ __ptr 不过最好不要轻易改写 winnt.h 。 最后,说说关于新版的OpenCV2.0 在 VS2008中的使用。参考文章《 How to install and use OpenCV 2.0 in Visual Studio2008(VS2008)》 OpenCV2.0 Windows版本下载地址: http://www.opencv./download/OpenCV-2.0.0a-wi n32.exe (for win32) 这个版本OpenCV2.0 是在2009年10月1日发布的。 安装后发现,其Lib目录中都是 .dll.a 文件,好像是库的入口文件,据网上说这些文件是不能直接使用的,要自己用CMake重新编译才能使用,编译可参考上面的文章《How to install and use OpenCV 2.0 in Visual Studio2008(VS2008)》。
vs2008配置DirectShow
最新推荐文章于 2015-01-28 14:36:42 发布