最近因为课程需要,在VS2010下安装配置openCV,配置的过程中遇到了很多的问题,捣鼓了很长时间,在此记录下来供大家参考,让大家少走弯路!
注:我的系统是Windows 7 64位系统
1.首先是下载VS2010并安装
2.下载并安装OpenCV,我的版本是2.6(安装目录为D:\Program Files\OpenCV) 注意将路径添加至Path中
PATH=D:\Program Files\opencv\build\x64\vc10\bin
3.下载并安装CMake,下载版本为Windows(Win32 Installer),安装目录为 D:\Program Files\CMake 2.8
4.运行cmake-gui(D:\Program Files\CMake 2.8\bin),设置路径为OpenCV安装路径(安装位置为:D:\Program Files\OpenCV),并创建子目录D:\Program Files\OpenCV\vs2010,用于存放编译结果。将数据填入指定文本框
5.点击“Configure”,在弹出对话框中选中Visual Studio 10.0;单选框中选项选择程序默认的;然后点击Fnish;程序会自动完成“Configure Done”;
6.然后点击“configure”,接着点击“Generate”。程序完成“Generate Done”。
7.完成以上步骤后,将在D:\Program Files\OpenCV\vs2010目录下生成OpenCV.sln的VC Solution File,接着请用vs2010打开OpenCV.sln,完成以下操作:
7.1 在Debug下,选择“解决方案资源管理器”下的“解决方案‘OpenCV’”,点击右键,运行“重新生成解决方案”,若编译无错,在选择“INSTALL”项目,运行“生成”。
7.2 在Release下,选择“解决方案资源管理器”下的“解决方案‘OpenCV’”,点击右键,运行“重新生成解决方案”,若编译无错,在选择“INSTALL”项目,运行“生成”。
此时opencv的函数库和动态链接库都已经编译完成!
8.配置Windows环境变量Path
PATH=D:\Program Files\opencv\build\x64\vc10\bin;D:\Program Files\CMake 2.8\bin;D:\Program Files\OpenCV\vs2010\bin
9.要将OpenCV和VS2010配置好,必须先创建一个工程,没有创建工程是不能进行配置的。比如创建一个MFC应用程序,名称为“Win32_01”。我电脑上有一个现成的MFC程序,直接打开的。
10.点击 项目属性配置属性VC++目录 对 “常规”子菜单的“包含目录”和“库目录”尽进行编辑。
注意 在 配置 Debug 和Release下进行相同操作 ,每次修改后记住保存。
在包含目录下添加
D:\Program Files\OpenCV\vs2010\include\opencv
D:\Program Files\opencv\build\include\opencv2
D:\Program Files\opencv\build\include\opencv
在库目录下添加D:\Program Files\opencv\build\x64\vc10\lib
11. 右键单击 “Win32_01”选中“属性”,进入“Win32_01属性页”,(注:lib名称中的246是版本号,根据自己安装的opencv版本,查看D:\Program Files\opencv\build\x64\vc10\lib)
为项目的Debug配置增加依赖的库:
opencv_calib3d246d.lib
opencv_contrib246d.lib
opencv_core246d.lib
opencv_features2d246d.lib
opencv_flann246d.lib
opencv_gpu246d.lib
opencv_highgui246d.lib
opencv_imgproc246d.lib
opencv_legacy246d.lib
opencv_ml246d.lib
opencv_objdetect246d.lib
opencv_ts246d.lib
opencv_video246d.lib
为项目的Release配置增加依赖的库:
opencv_calib3d246.lib
opencv_contrib246.lib
opencv_core246.lib
opencv_features2d246.lib
opencv_flann246.lib
opencv_gpu246.lib
opencv_highgui246.lib
opencv_imgproc246.lib
opencv_legacy246.lib
opencv_ml246.lib
opencv_objdetect246.lib
opencv_ts246.lib
opencv_video246.lib
配置完成。
----------------------------------------------------------------------------------------------------------------------
但是当我编译的时候一直提示错误:
error LNK2019: 无法解析的外部符号_cvDestroyWindow,该符号在函数_wmain 中被引用
error LNK2019: 无法解析的外部符号_cvReleaseImage,该符号在函数_wmain 中被引用
error LNK2019: 无法解析的外部符号_cvWaitKey,该符号在函数_wmain 中被引用
error LNK2019: 无法解析的外部符号_cvShowImage,该符号在函数_wmain 中被引用
error LNK2019: 无法解析的外部符号_cvAbsDiff,该符号在函数_wmain 中被引用
error LNK2019: 无法解析的外部符号_cvCreateImage,该符号在函数_wmain 中被引用
error LNK2019: 无法解析的外部符号_cvGetSize,该符号在函数_wmain 中被引用
error LNK2019: 无法解析的外部符号_cvLoadImage,该符号在函数_wmain 中被引用
error LNK2019: 无法解析的外部符号_cvNamedWindow,该符号在函数_wmain 中被引用
纠结很长时间,终于想到是64位系统的原因,需要另外配置:
- 配置管理器中 新建 “活动解决方案平台” ,在对话框中,“键入或选择新平台”中填写“x64”,“从此处复制设置”下拉列表中选择“win32”,并勾选“创建新的项目平台”;点击“确定”按钮
- 展开“配置属性”“Configuration Properties”列表,再展开“ C++”列表,选择“常规”“General”
- 在“附加包含目录”“Additional Include Directories”中添加:
D:\Program Files\OpenCV\build\include\opencv D:\Program Files\OpenCV\build\include\opencv2 D:\Program Files\OpenCV\build\include - 然后在编译程序之后,需要使用Ctrl +F5才能正常启动程序,至于具体原因我也不知道
- ok,到此为止,终于搞定!