1.下载和安装OpenCV SDK
1.1 资源下载
在OpenCV官网http://opencv.org SDK安装包。对应自己的操作系统,可以下载Windows,Linux/Mac和ios版本。目前官网已经给出OpenCV v3.0bata版本。本文中以OpenCV v2.4.10版本为例进行安装。(各个版本安装过程大体相同,后面将针对不同之处给出说明)
1.2 资源安装
下载的OpenCV SDK的后缀名为exe,是一个解压安装程序。双击后会提示设置解压路径,推荐路径D:\Program Files。(因为OpenCV项目文件打包的时候,根目录就是opencv,所以我们不需要额外的新建一个名为opencv的文件夹然后再解压,那是多此一举的事情)然后点击Extract按钮,进行安装。
2. 环境变量和路径设置
打开计算机-->属性-->高级系统设置,在高级目录下单击环境变量按钮,打开环境变量设置对话框。
2.1 用户变量设置
在用户变量(此处为lbs的用户变量中)添加两个变量。
(1) 新建opencv变量,变量值设置为D:\ProgramFiles\opencv\build。
(2) 新建path变量,变量值设置为D:\ProgramFiles\opencv\build\x86\vc11\bin。此处如果已存在path变量,仅需对其变量值修改就行,在后面加上上述路径,但需要用分号和前面的路径隔开(英文半角下的分号)
2.2 系统变量设置
在原有的path变量中对变量值修改,在变量值的最后加上D:\Program Files\opencv\build\x86\vc11\bin路径,注意要使用英文半角下的分号和前面的路径隔开。
※说明
(1)不论电脑是32位还是64位,上述路径中均以x86路径输入,因为创建的程序中默认是在使用win32编译器进行编译。
(2)路径修改后需要重启电脑才能生效。
3. 工程项目属性设置
工程项目属性配置主要是指对Debug和Release环境下的工程属性进行修改(通过修改Microsoft.Cpp.Win32.user文件进行)。查阅相关资料,发现Visual Studio 2012中已经不再区分Debug和Release的Microsoft.Cpp.Win32.user文件,所以配置了Debug或Release中的任何一个Microsoft.Cpp.Win32.user,就相当于同时配置了Debug和Release环境下的两个Microsoft.Cpp.Win32.user。但又因为Debug和Release环境下加载的库文件不同,需要单独为Debug和Release环境下的工程项目属性进行配置。考虑到VS2012的该特点总结出以下属性配置方法。
3.1 新建工程
(1)新建Win32控制台应用程序,此处工程名命名为OpenCVTest。并在后续的属性设置中选择空工程(Empty Project)
(2)为该工程添加源文件,并命名为OpenCVTest.cpp
3.2 属性管理器之Debug环境下配置
Visual Studio 2012中已经不再区分Debug和Release的Microsoft.Cpp.Win32.user文件,所以配置了Debug或Release中的任何一个Microsoft.Cpp.Win32.user,就相当于同时配置了Debug和Release环境下的两个Microsoft.Cpp.Win32.user。但又因为Debug和Release环境下加载的库文件不同,需要单独为Debug和Release环境下的工程项目属性进行配置。
此处给出属性管理器之Debug环境下配置的方法。
3.2.1 新建属性表,并命名为OpenCV_debug_property.props
(1)在视图(View)目录的下拉菜单中打开属性管理器(Property Manage),也可以直接在VS2012界面的左下角打开Property Manage快捷键进入属性管理器(Property Manage)界面,如下图所示。
(2)在Debug|Win32目录上单击选择“添加新项目属性表”,新建属性表,并命名为OpenCV_debug_property.props,如下图所示。
3.2.2 打开新建的属性表OpenCV_debug_property.props,添加包含目录
(1) 打开属性表OpenCV_debug_property.props
(2)在VC++选项对应的包含目录中,添加包含的目录,此处添加3个目录
D:\Program Files\opencv\build\include
D:\Program Files\opencv\build\include\opencv
D:\Program Files\opencv\build\include\opencv2
3.2.3 在属性表OpenCV_debug_property.props,添加库目录
(1)打开属性表,并在VC++选项对应的库目录中,添加库目录,此处添加1个目录
D:\Program Files\opencv\build\x86\vc11\lib
※说明
(1)不论电脑是32位还是64位,上述路径中均以x86路径输入,因为创建的程序中默认是在使用win32编译器进行编译。
(2)输入的路径中选择vc11是因为本处是在VS2012平台上搭建。vc10对应VS2010,vc11对应VS2012,vc12对应VS2013
3.2.4 在属性表OpenCV_debug_property.props,在链接器中添加附加依赖项
(1) 打开属性表OpenCV_debug_property.props,选择链接器(LINKER)目录下的输入(INPUT)选项
(2)添加附属依赖项,加入如下库文件,共19个(后缀均带d,表示是Debug环境下)
opencv_ml2410d.lib
opencv_calib3d2410d.lib
opencv_contrib2410d.lib
opencv_core2410d.lib
opencv_features2d2410d.lib
opencv_flann2410d.lib
opencv_gpu2410d.lib
opencv_highgui2410d.lib
opencv_imgproc2410d.lib
opencv_legacy2410d.lib
opencv_objdetect2410d.lib
opencv_ts2410d.lib
opencv_video2410d.lib
opencv_nonfree2410d.lib
opencv_ocl2410d.lib
opencv_photo2410d.lib
opencv_stitching2410d.lib
opencv_superres2410d.lib
opencv_videostab2410d.lib
3.3 属性管理器之Release环境下配置
Release环境下的属性配置大体同Debug环境下的配置,此处相同步骤不再赘述,仅给出不同配置的步骤说明。
3.3.1 新建属性表,并命名为OpenCV_release_property.props
在Release|Win32目录上单击选择“添加新项目属性表”,新建属性表,并命名为OpenCV_release_property.props,方法同Debug环境下的配置,只是属性表所属的目录不同。
3.3.2 打开新建的属性表OpenCV_release_property.props,添加包含目录
此处方法同Debug环境下的包含目录配置,不再赘述。
3.3.3 打开新建的属性表OpenCV_release_property.props,添加库目录
此处方法同Debug环境下的包含目录配置,不再赘述。
3.3.4 在属性表OpenCV_release_property.props,在链接器中添加附加依赖项
此处和Debug环境下添加的附加依赖项不同,在附加依赖项中添加如下库文件,共19个。(后缀均不带d,表示是Release环境)
opencv_objdetect2410.lib
opencv_ts2410.lib
opencv_video2410.lib
opencv_nonfree2410.lib
opencv_ocl2410.lib
opencv_photo2410.lib
opencv_stitching2410.lib
opencv_superres2410.lib
opencv_videostab2410.lib
opencv_calib3d2410.lib
opencv_contrib2410.lib
opencv_core2410.lib
opencv_features2d2410.lib
opencv_flann2410.lib
opencv_gpu2410.lib
opencv_highgui2410.lib
opencv_imgproc2410.lib
opencv_legacy2410.lib
opencv_ml2410.lib
4. 测试程序
完成了上述步骤后,VisualStudio2012环境下配置OpenCV的步骤已经全部完成,下面给出一个测试程序,验证环境配置的正确性。
在程序的源文件目录下的OpenCVTest.cpp文件中加入下述代码。
[cpp] view plain copy print?- #include<iostream>
- #include <opencv2/core/core.hpp>
- #include <opencv2/highgui/highgui.hpp>
- using namespace cv;
- int main()
- {
- // 读入一张图片
- Mat img = imread("nanjing.jpg");
- // 创建一个名为 "游戏原画"窗口
- cvNamedWindow("南京夜景真美啊!");
- // 在窗口中显示游戏原画
- imshow("南京夜景真美啊!", img);
- // 等待6000 ms后窗口自动关闭
- waitKey(6000);
- }
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
// 读入一张图片
Mat img = imread("nanjing.jpg");
// 创建一个名为 "游戏原画"窗口
cvNamedWindow("南京夜景真美啊!");
// 在窗口中显示游戏原画
imshow("南京夜景真美啊!", img);
// 等待6000 ms后窗口自动关闭
waitKey(6000);
}
在工程目录下加入一张测试图片,此处以”nanjing.jpg”为例,然后分别在Debug环境下和Release环境下运行程序,程序运行正确,可以正确显示图像,验证了上述配置的正确性。
(1) Debug环境下,程序运行正确
(2) Release环境下,程序运行正确
5. 永久配置OpenCV环境
针对其他的OpenCV工程,不用再像上述步骤一样进行一步一步的配置,只需进行一步操作就可以快速配置OpenCV环境,详情如下。
将上述步骤创建的两个属性表OpenCV_debug_property.props和OpenCV_release_property.props保存到一个常用的文件夹中。当创建新工程时,只需在属性管理器中添加上述两个属性表就可,快速完成配置OpenCV的步骤。
6. 常见问题解答FAQ和参考资料
撰写本文时查阅了很多网上和书籍资料,但大多未结合Visual Studio 2012中已经不再区分Debug和Release的Microsoft.Cpp.Win32.user的特点进行配置,因此自己在第一次配置时走了不少弯路,花了大半个晚上去尝试修改。现特此整理出此文,总结相关配置。
配置过程中主要参考了以下两个资料,给出网址,供参考。
[1] http://blog.csdn.net/lysc_forever/article/details/24272595
[2] http://blog.csdn.net/poem_qianmo/article/details/19809337
本文由VS软件圈(vssoft.net)发布,不代表VS软件圈立场,转载联系作者并注明出处:https://vssoft.net/vsazwt/VS2012anzhuangwenti/2020/0725/4821.html