这里以VS2013和OpenCV2.4.12为例。首先将OpenCV下载安装好,配置的过程可以分为两个步骤:一是设置环境变量;二是配置项目属性表。
本文总结了网上所有的配置方式,设置环境变量这一步都一样,差异出现在配置属性表这一步上。因为修改属性表的位置不同,所以这里分为3种方式。
设置环境变量
首先设置环境变量。右击"我的电脑",单击"属性",打开一个页面。找到"高级系统设置",单击,出现系统属性页。单击"环境变量",即出现环境变量修改页。在"系统变量"下面找到Path。双击编辑Path,将OpenCV安装目录的bin目录添加进去。比如 D:\opencv\build\x86\vc12\bin;
注意这里的x86和x64的区别,分别代表32位和64位编译。vc12即VS2013使用的编译器。
配置属性表
在Visual Studio创建的项目中配置OpenCV开发环境,包含3块内容,即把OpenCV的包含目录、库目录,库文件(附加依赖项)添加进来。这个操作在属性表中进行。一个属性表,长如下图这样。
添加OpenCV包含目录和库目录:在属性表中找到"VC++目录",然后分别找到"包含目录"和"库目录"两项,把OpenCV安装路径的对应目录添加进去。OpenCV的包含目录,例如D:\opencv\build\include;D:\opencv\build\include\opencv2;D:\opencv\build\include\opencv;有3个路径都要添加进去。
OpenCV的库目录,例如D:\opencv\build\x86\vc12\lib。同样需要注意x86和vc12所代表的含义。
添加OpenCV的库文件:在属性表中找到"链接器",点开选择"输入",找到"附加依赖项",进行编辑。对于OpenCV2.4.12,把如下库文件的名称添加进去。
opencv_calib3d2412d.lib
opencv_contrib2412d.lib
opencv_core2412d.lib
opencv_features2d2412d.lib
opencv_flann2412d.lib
opencv_gpu2412d.lib
opencv_highgui2412d.lib
opencv_imgproc2412d.lib
opencv_legacy2412d.lib
opencv_ml2412d.lib
opencv_nonfree2412d.lib
opencv_objdetect2412d.lib
opencv_ocl2412d.lib
opencv_photo2412d.lib
opencv_stitching2412d.lib
opencv_superres2412d.lib
opencv_ts2412d.lib
opencv_video2412d.lib
opencv_videostab2412d.lib
可以看到,2412代表了版本号信息。其中的d代表DEBUG模式;如果使用到RELEASE模式,去掉d即可。上面的库文件名称都可以在上面添加的OpenCV库目录下找到,例如D:\opencv\build\x86\vc12\lib。
属性表的位置
根据属性表创建的位置不同,分为3种方式。具体使用哪种方式,你需要确定属性表生效的范围,以及视方便程度而定。
方式一:直接在单个项目中添加
在一个Visual Studio项目中,菜单栏中依次点击"项目","属性",打开一个属性页,然后编辑;配置过程已经讲过了。
这种方式完全可以解决问题了。但缺点是如果再新建一个项目,想要OpenCV开发环境,则必须要重新配置一次。虽然配置属性表并不复杂,但对于新手来说这是一个令人头大的问题。
方式二:保存好一个项目属性表
首先需要打开属性管理器,工作区没有显示的话,在菜单栏中点开"视图",就可以找到。
分别在Debug|Win32和Release|Win32处右击选择"添加新项目属性表",创建好就会出现熟悉的属性表编辑页,配置过程一样。
添加的时候,这两个后缀为.props的文件会保存起来。
方便起见,比如我将文件分别命名为OpenCV2412_VC12_Debug和OpenCV2412_VC12_Release,保存在一定的目录下。
等下次新建项目,需要用到OpenCV的时候,就选择"添加现有属性表"”即可。
这种方式比较方便,灵活性好。
方式三:更改Microsoft.cpp.Win32.user的内容
和方式二一样,需要打开"项目属性表"。展开列表,双击Microsoft.cpp.Win32.user,直接更改属性内容。注意Debug和Release模式的不同。
因为 这个属性表是任意新建一个工程项目都会带着的,所以无需重新配置,即使你建的项目跟OpenCV无关。
这种方式有点简单粗暴,一劳永逸。但一个与OpenCV无关的项目,还带着OpenCV配置,对于一个强迫症来说,这是无法接受的。所以我选择方式二。