1、下载VS2010和 OpenCV 2.4.9,并完成解压。
http://download.csdn.net/detail/morre/9731670
下载完后得到文件OpenCV 2.4.9,双击后会提示解压到某个地方,推荐放到D:\Program Files\下,比如D:\Program Files,(因为OpenCV项目文件打包的时候,根目录就是opencv,所以我们不需要额外的新建一个名为opencv的文件夹,然后再解压,那是多此一举的事情)然后点击Extract按钮。
等一段时间,OpenCV2.4.9近3个多G的文件就解压到了D:\Program Files下。
其中,build里面是使用OpenCV相关的文件,sources里面是源代码。想查看完整的源代码需要用cmake来“解包”。
配置方法如下:
计算机->(右键)属性->高级系统设置->高级(标签)->环境变量->(双击)path(用户,系统里面的path任选其一)->在变量值里面添加相应的路径。
对于32位系统,就添加:
\opencv\build\x86\vc10\bin;
而对于64位系统,可以两个都添加上:
\opencv\build\x86\vc10\bin和\opencv\build\x64\vc10\bin,
例如,本人配置的上位机就是:
D:\Program Files\opencv\build\x64\vc10\bin;
D:\ProgramFiles\opencv\build\x86\vc10\bin
注:变量值实际为bin文件夹的路径;D表示OpenCV安装于D盘;X64表示运行系统环境位64位系统,若安装于32位系统,应为X86;vc10表示编译环境为Microsoft Visual Studio 2010;变量添加完成后需要注销系统,才会生效。
下面对VS2010环境中的包含目录进行配置:
<视图>--<属性管理器>
也可在新出现的“属性管理器”工作区中,点击项目:
->Debug|Win32->Microsoft.Cpp.Win32.userDirectories(反键属性,或者双击)即可打开属性页面。
接着是在
【通用属性】 ->【VC++目录】 ->【包含目录中】
添加上这三个目录:
D:\Program Files\opencv\build\include
D:\Program Files\opencv\build\include\opencv
D:\Program Files\opencv\build\include\opencv2
当然,这是之前把OpenCV解压到D:\Program Files\下的情况。实际的路径还要看你自己把OpenCV解压到了哪个目录下,根据实际情况来调节。
点击项目->Debug|Win32->Microsoft.Cpp.Win32.userDirectories(反键属性,或者双击)即可打开属性页面。【通用属性】 ->【VC++目录】 ->【库目录】。
添加上路径:
D:\ProgramFiles\opencv\build\x86\vc10\lib
注意:
不管你是32位还是64位操作系统,只用管你用win32编译器还是X64编译器。
其实配置选择什么跟64位还是32位系统没有直接的关系,而是在于你在编译你的程序的时候是使用那个编译器。
编译器选的是win32,就用x86,编译器选的是X64,就用X64。不过一般情况下,都是用的win32的X86编译器。所以,无论32还是64位操作系统,配置文件最好都选择x86版的。另外,这里的vc10表示vs2010,如果是其他版本的visual studio,稍微要微调一下。
属性管理器”工作区中,点击项目->Debug|Win32->Microsoft.Cpp.Win32.userDirectories(反键属性,或者双击)即可打开属性页面。【通用属性】 ->【链接器】->【输入】->【附加的依赖项】
添加如下的内容:
opencv_calib3d249.lib
opencv_contrib249.lib
opencv_core249.lib
opencv_features2d249.lib
opencv_flann249.lib
opencv_gpu249.lib
opencv_highgui249.lib
opencv_imgproc249.lib
opencv_legacy249.lib
opencv_ml249d.lib
opencv_objdetect249.lib
opencv_ts249.lib
opencv_video249.lib
opencv_nonfree249.lib
opencv_ocl249.lib
opencv_photo249.lib
opencv_stitching249.lib
opencv_superres249.lib
opencv_videostab249.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_imgproc249d.lib
opencv_legacy249d.lib
opencv_objdetect249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_nonfree249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_videostab249d.lib
需要注意的是,所粘贴内容即为D:\opencv\build\x86\vc10\lib下所有lib库文件的名字;其中的249代表我们的OpenCV版本为2.4.9,若是其他版本的配置则在这里要进行相应的更改,比如说2.4.6版的OpenCV,那么这里的opencv_calib3d246d.lib就要改成opencv_calib3d246d.lib了.Debug文件库名有d结尾,Release没有,如 opencv_ts249d.lib和opencv_ts249.lib。
6、配置过程中遇到的问题:
到此为止,完成了VS2010和 OpenCV2.4.9的开发环境配置,再次运行程序(F5),仍然不能使程序正常运行,出现:vs2010 fatal error LNK1169: 找到一个或多个多重定义的符号。这是因为:全局变量的重复定义。比如在a.h中申明了全局变量 int global;在b.h中申明 extern int global;则include a.h相当于吧a.h中全局变量的申明又include进来了,所以编译器会认为是重复编译。
解决方法:在属性-链接-命令行中添加 /force:multiple,强制允许多重定义,则编译的时候会自动忽略第二个定义。
再次运行程序,出现:vs2010 fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏。
解决方法:复制
C:\Windows\winsxs\x86_netfx-cvtres_for_vc_and_vb_b03f5f7f11d50a3a_6.1.7601.17514_none_ba1c770af0b2031b 目录下的 cvtres.exe 到安装Microsoft Visual Studio 10.0的目录下,如C:\Program Files\Microsoft Visual Studio 10.0\VC\bin ,直接覆盖替换。
再次运行上位机程序,出现了上位机界面,环境配置到此结束。