下载的是2.4.10的版本,编译环境VS2012。
第一步,双击opencv-2.4.10.exe,选择解压到c:\,即C盘根目录,解压的时候会自动生成一个opencv的文件夹的,然后解压的文件都在这个opencv的文件夹里面。注意:我解压的路径是c:\,但如果你解压的不是这个目录,比如说解压在d:\tmp\,那么下面所有涉及到路径有关的配置都需要把c:\替换为d:\tmp\
第二步,设置环境变量。设置环境变量的目的在于,让操作系统知道opencv编译出来的DLL的位置,这一步没有设置对的话,在程序运行的时候,会出现找不到opencv的某个dll的提示之类的错误。右键计算机->属性->高级系统设置->高级->环境变量,在用户变量与系统变量下修改Path变量,如果没有这个变量的话,就新建一个。这里把Path变量的值改为c:\opencv\build\x86\vc11\bin 用户变量还是系统变量随便选一个改都可以,其实问题不大。改完需要重启或者注销才能生效。看下图就知道了,这个Path路径下面其实就是一堆的dll。
第三步,为了演示,在VS2012下,新建一个空的控制台程序。为了编译opencv,当然首先必须包含opencv的头文件吧。opencv编译头文件在路径:C:\opencv\build\include 下,里面头文件很多的,为了编译的顺利,先不用管那么多,直接右键点击解决方案,找到属性,在C/C++->常规->附加包含目录,加上以下3条路径:
c:\opencv\build\include
c:\opencv\build\include\opencv
c:\opencv\build\include\opencv2
第四步,仅仅有头文件还是不足以编译opencv的,我们在使用dll的时候,需要dll文件本身,相对应的头文件,还有相对应的lib文件。那opencv的lib文件在哪里?在路径C:\opencv\build\x86\vc11\lib下。
这样,在正式使用和编译opencv的函数的之前,还需要告诉编译器,opencv的dll相对应的lib文件在哪里。
在链接器—>常规—>附加库目录,加入路径:C:\opencv\build\x86\vc11\lib
然后,在在链接器—>输入—>附加依赖项,输入lib的名字。值得注意的是,opencv的dll分为debug和release版本,名字差不多,只是debug版本的名字后面会有个字母d。比如,opencv_core2410.dll和opencv_core2410d.dll,前者是发布版,后者是调试版,这里发布版的先不管,把以下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_ml2410d.lib;
opencv_nonfree2410d.lib;
opencv_objdetect2410d.lib;
opencv_ocl2410d.lib;
opencv_photo2410d.lib;
opencv_stitching2410d.lib;
opencv_superres2410d.lib;
opencv_ts2410d.lib;
opencv_video2410d.lib;
opencv_videostab2410d.lib;
唉,一股脑都加进去了。实际上当然是用到哪个加哪个了,不过那样麻烦。
第五步,设置完成后,在工程的源文件输入如下测试代码。
#include
using namespace cv;
int main(int argc, char* argv[])
{
Mat img = imread("d:/paojie.jpg");
imshow("image", img);
waitKey();
return 0;
}
顺利编译,运行,结果如下的话,那就正常运行了:
当然了,图片的路径要设置对,d盘下,得有paojie.jpg这幅图片。
可以看到,设置起来还是挺麻烦的。难道每一个用到opencv的工程都要这么蛋疼地设置一遍吗,当然不能。我们可以把opencv的设置保存下来。
刚才我们是直接在项目属性里做的各种设置,现在,不要在工程属性里面设置。打开属性管理器,以debug设置为例。右键点击debug|win32,选择“添加新项目属性表”。
接下来,名字什么的随便啦。
点击添加,这样就保存了一份opencv的设置。在属性管理器上右键刚才新建的那份名为opencv的属性表,选择属性。
在弹出来的属性页里面,把我们之前做的那些配置重来一遍,不过这次的配置不会白费的,会保存在一个.props后缀名的文件,比如我的opencv.props。
配置完成后,以后哪个工程需要用到opencv的,直接在属性管理器上,把这个props文件添加进来,直接编译就完事了,省心。