2010-01-29

MSVC6使用OpenCV

http://sourceforge.net/projects/opencvlibrary/下载OpenCV_1.0.exe
执行安装。

手工添加VC环境目录,包括include和lib。

OpenCV选择打开OpenCV MSVC6 Workspace,编译。

编译cvaux错误:error C2039: 'foreground_regions' : is not a member of 'CvFGDStatModel
解决方法:http://hi.baidu.com/greatsea/blog/item/66dbaa1f34e36bf1e1fe0b60.html/cmtid/2f610c4ed707cc05b3de05c5
在cvaux.h文件中,搜索关键字foreground_regions,
第1137行
CvMemStorage* storage; /*storage for �oreground_regions?/ \
CvSeq* foreground_regions /*foreground object contours*/
改为如下形式:
CvMemStorage* storage; /*storage for foreground_regions*/ \
CvSeq* foreground_regions /*foreground object contours*/

之后,
Q: 当我试图编译其中的应用程序时,得到错误:streams.h 没有发现.
A: 你需要 DirectShow SDK ,它是 DirectX SDK 的一个部分。

http://directshow.wonderu.com/samples下载了DirectShow SDK,编译出错:
wxutil.h(53) : error C2061: syntax error : identifier 'DWORD_PTR'
解决方法:从"Tools"目录中选择"Option",然后在include directory中将Platform SDK加到VC inlcude之前。

接着又提示找不到sal.h文件。
解决方法:http://bbs.gameres.com/showthread.asp?threadid=141334
因为最新的DirectX SDK不支持VC6.0。这个sal.h好像是新版的VC中的头文件。DirectX 9.0c对VC6.0支持的最后一个版本好像是Summer 2004。

下载安装DirectX 9.0 SDK Summer 2004。
自动设置VC6环境目录。

编译提示streams.h没有找到。
解决方法:把Samples\C++\DirectShow\BaseClasses添加到include路径。

提示error C2146: syntax error : missing ';' before identifier 'HSEMAPHORE'
解决方法:安装Platform SDK。支持VC6的Platform SDK是Microsoft Platform SDK February 2003。经过验证,XPSP2 PSDK Full Download with Local Install可以用于VC6。

安装后执行Visual Studio Registrtion,设置VC6环境目录。

编译cvcam提示unresolved external symbol _CLSID_CaptureGraphBuilder2。
解决方法:把Strmiids.lib添加为链接库。

如果提示错误,说某些已经定义,那么交换一下VC环境中Directories的Lib中Direct X SDK和VC的lib目录顺序。

至此,cvcamdemo也应该可以使用了。

No comments: