版权声明:对于本博客所有原创文章,允许个人、教育和非商业目的使用,但务必保证文章的完整性且不作任何修改地以超链接形式注明原始作者、出处及本声明。
博客地址:http://blog.csdn.net/shuxiao9058
原始作者:季亚
首先声明在Visual Studio 2008/2010下使用OpenCV不需要再编译OpenCV-2.4.0,原因是在OpenCV-2.4.0.exe解压后会产生build文件夹,其中有很多目录,我们注意到x86文件夹,里面又有vc9、vc10等文件夹(包含debug和release版本),使用这些文件我们可以直接配置OpenCV-2.4.0,这里讲述编译方法只是一时兴起。配置方法详见本人其他博文:OpenCV 2.3.x/2.4.x在Visual Studio 2005/2008和VisualStudio 2010配置方法详解,这里不对这方面的知识进行讲解。
我们将要使用的工具有:Visual Studio 2005/2008 Professional、Visual Studio 2010 Ultimate、cmake、intel tbb、OpenCV-win源代码(注意是Windows下的源代码,linux源码编译会产生错误)。
下面,我们就来介绍如何使用OpenCV-win源代码编译OpenCV目标文件吧。
一、生成项目文件
1.首先,我们将预使用的OpenCV-win源代码放置到指定目录
我在“C:\ProgramFiles”目录下新建一个“OpenCV”目录,并在里面新建一个src目录并将OpenCV-win源码放置到该文件夹,目录结构如图1所示:
图1 C:\ProgramFiles\OpenCV\src内的目录结构
2.下载并安装配置intel tbb
这里我把intel tbb解压后的文件夹放置到“C:\Program Files”目录下(如图2所示),然后将intel tbb的bin目录添加到系统环境变量,在桌面上右击“计算机”,选择“属性-高级系统设置”,进入“高级”选项卡,“环境变量-系统变量”,如图3所示:
图2 tbb40_20120408oss内的目录结构
图3 系统环境变量
编辑“Path”变量,在最后添加intel tbb的bin(注意要深入到最内层目录,如Visual2005的话应该为“C:\ProgramFiles\tbb40_20120408oss\bin\ia32\vc8”,Visual Studio 2008应为“C:\ProgramFiles\tbb40_20120408oss\bin\ia32\vc9”)目录所在全路径。如我应该添加如下变量:“C:\Program Files\tbb40_20120408oss\bin\ia32\vc8”,这里要注意的是变量之间是以分号“;”分隔的(玩过Linux的都知道Linux下系统变量之间是以冒号“:”分隔的)。
修改完系统环境变量后,为使环境变量生效,需要注销一下电脑,或者重启“explorer.exe”进程即可,这里不过多赘述。
3.安装cmake,并生成项目文件
安装完cmake后,运行cmake,如图4所示,然后单击“Where is the source code:”右侧的“Browse Source”,浏览到“C:/ProgramFiles/OpenCV/src”文件夹,单击“where to buildthe binaries:”右侧的“Browse Build”,浏览到“C:/Program Files/OpenCV/vs2008”文件夹(vs2008文件夹是我自己创建的)。
图4 配置源代码和生成目录
然后单击左下方的“Configure”按钮,这时会弹出“cmake-gui”窗口,在“Specify the generator for this project”下拉菜单选择“Visual Studio 8 2005”、“Use defaultnative compilers”后,单击“Finish”按钮,如图5所示。
图5 生成项目类型选择
完成以上操作后的cmake界面如图6所示,这里勾选“BUILD_EXAMPLES”和“WITH_TBB”选项后单击“Configure”按钮后,“TBB_INCLUDE_DIRS”选项显示为红色,此处为cmake找不到intel tbb的包含文件所致。
图6 勾选“BUILD_EXAMPLES”和“WITH_TBB”选项
将intel tbb里面的include文件夹路径(注意是include,不是include里面的子文件夹)定位到该配置属性的路径里,如图7所示。
图7 配置intel tbb包含目录
再次点击Configure按钮,在TBB_LIB_DIR处又会出现红色一行,此处为intel tbb的库文件位置,此处必须将路径定位到含有LIB文件的位置,比如我的安装位置是“C:/ProgramFiles/tbb40_20120408oss/lib/ia32/vc8”,也就是说,在lib文件夹下会有子文件夹,必须定位到子文件夹对应的vc版本文件夹里去,这里由于我们是以Visual Studio 2005为例进行编译,所以我们选择vc8文件夹,ia32子文件夹是32位系统,此处应根据对应操作系统选择,如图8所示。
图8 配置intel tbb库文件目录
然后,我们再次点击Configure,此时所有红色行已经变为白色,同时在下方的信息里面会有一条为“Use TBB:YES”的字样,证明我们已经将intel tbb配置完毕。
最后点击Generate,成功生成项目文件(如图9所示),同时在下方的信息里面会有一条为“Generating done”的字样(如图10所示)。
图9成功生成项目文件
图10 “Generating done”
二、编译生成目标文件
完成后在刚创建的子文件夹C:\Program Files\OpenCV\vs2005下会出现一个vs2005的解决方案文件OpenCV.sln,双击打开后,出现OpenCV2.4的所有工程项目,先不要着急编译。
1. Visual Studio 2005/2008
(1)配置VC++目录
说明:由于本部分Visual Studio 2005/2008和Visual Studio 2010不太相同,这里我分别讲述VisualStudio 2005和Visual Studio 2010使用第一节中生成的项目文件编译生成目标文件。
(a)Visual Studio2005/2008下配置VC++目录
依次选择“工具-选项-项目和解决方案-VC++ 目录”(注意平台选择的是Win32),如图11所示。
图11 VC++ 目录
依次添加intel tbb可执行路径、包含目录和库目录,这里的可执行路径与cmake前面cmake生成项目文件时的库目录类似,包含目录和库目录与前面cmake生成项目文件时的包含目录和库目录相同。如这里vs2005的可执行路径为“C:\Program Files\tbb40_20120408oss\bin\ia32\vc8”,包含目录为“C:\Program Files\tbb40_20120408oss\include”,库目录为“C:\ProgramFiles\tbb40_20120408oss\lib\ia32\vc8”。
配置完成后,单击“确定”按钮。
(b)Visual Studio 2010下配置VC++目录
将选项卡切回到“属性管理器”,展开“ALL_BUILD-Debug | Win32-Microsoft.Cpp.Win32.user”后,右击选择“属性-通用属性-VC++ 目录”,如图12所示:
图12 VC++目录
同样的,依次添加intel tbb可执行路径、包含目录和库目录,这里的可执行路径与cmake前面cmake生成项目文件时的库目录类似,包含目录和库目录与前面cmake生成项目文件时的包含目录和库目录相同。如这里vs2010的可执行路径为“C:\Program Files\tbb40_20120408oss\bin\ia32\vc10”,包含目录为“C:\Program Files\tbb40_20120408oss\include”,库目录为“C:\Program Files\tbb40_20120408oss\lib\ia32\vc10”。
配置完成后,单击“确定”按钮。
(2)生成调试模式库
将选项卡切回到“解决方案资源管理器”,将编译模式切换为Debug模式,右键单击“解决方案OpenCV”,选择“重新生成解决方案”,这里我们可以依次选择“视图-其他窗口-错误列表”(vs2010为“视图-错误列表”)以观察编译过程是否有错误或者警告,有警告信息并不妨碍编译OpenCV,如图13所示。
图13 选择Debug模式,“重新生成解决方案”
编译完成后再右键单击INSTALL项目,选择“生成”,如图14所示。
图14 生成调试模式库
(3)生成发行模式库
将编译模式切换为Release模式(如图15所示),重复Debug模式下的步骤。完成后在你的解决方案文件夹“C:\ProgramFiles\OpenCV\vs2005”里面会生成install目录,该目录下包含我们编程时需要的可执行文件、包含文件和库文件等。
图15 选择Release模式,重新生成解决方案
特别注意:一定不要忘记右键单击INSTALL项目,选择“生成”。
三、整理目录
上面我们将OpenCV-2.4.0分别编译成vs2005、vs2008(由于这个操作与vs2005完成相同,上文略去)和vs2010(与vs2005操作相同部分略去)目标文件,为使我们编译的目标文件与OpenCV官方网站发布的build目录结构相同。我们要进行如下操作:
1.新建一个名为“OpenCV-2.4.0-win”的目录并新建vc8、vc9和vc10三个文件夹,如图16所示:
图16 建立目录结构
2.分别将vs2005、vs2008和vs2010中install中的文件(或文件夹)复制到vc8、vc9和vc10文件夹中(注意顺序)。
说明:
a.我们可以将上面整理的“OpenCV-2.4.0-win”文件夹打包以备以后使用,即得与OpenCV官网目录结构相仿的OpenCV-2.4.0函数库;
b.观察文件名我们可以发现,无论可执行文件还是库文件有些文件最后有个字母“d”,而有些文件则没有,这是为了辨别调试模式与发行模式生成的文件,不能调试的朋友要特别注意这一点。
四、配置并测试OpenCV-2.4.0函数库
这个部分本文不再讲述,详细方法可以参考本人其他博文:OpenCV 2.3.x/2.4.x在Visual Studio 2005/2008和Visual Studio 2010配置方法详解。
特别说明:由于x86与x64配置只需要稍许修改,所以这里没有介绍x64平台下的编译方法。
相关链接:
OpenCV视觉库:http://sourceforge.net/projects/opencvlibrary/
TBB Home:http://threadingbuildingblocks.org/
Cmake:http://www.cmake.org
Visual Studio 2010下安装OpenCV及相关配置:http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=11157
附件下载:
http://115.com/file/bem4144r#OpenCV-2.4.0.exe
http://115.com/file/e7jf2z2m#tbb40_20120408oss_win.zip
编译后文件(无需再编译,可直接使用):