您的位置:首页 > 运维架构

为什么要使用CMake+VS编译OpenCV的源码

2016-03-24 15:30 561 查看
多数情况下,可以直接使用OpenCV自带的库文件,但是如果是为了方便调试:

1. 方便调试opencv源码

2. 为了与某些库兼容

还是需要重新编译opencv的源码。

OpenCV1.0版本有windows,linux之分,在 \OpenCV\_make文件夹下面已经存在了一个opencv.dsw的工程文件,直接用VC6,或者,Visual Studio就可以打开该工程,从而可以进行相应的编译工作;而对于OpenCV2.0及以后的版本而言,就没有类似的工程文件了。这个时候,就需要你自己利用CMake工具来生成一个Visual Studio的工程文件了。

CMake编译OpenCV


OpenCV的下载与安装

下载Windows下的安装文件OpenCV-2.4.3.exe,双击解压,选择需要的安装目录即可。我的存放路径为D:\opencv。

解压完成后就是需要的文件了。注意相应的目录不能包含中文。


编译OpenCV

这一步不是必须的,如果不编译,可以使用编译好的库,但是不能进行源代码的跟踪调试(未验证),因此这里还是编译一下。

编译用的工具Cmake,这是一个跨平台的安装编译工具,主要用于把OpenCV的源码生成对应的VS工程。操作如下。

 

1、如图所示,设置OpenCV的安装文件路径和想要生成的文件路径;

2、点击左下方configure,在弹出的选项中选择Visual Studio 10(对应2010版本);

3、点击完成就会进行配置,配置后的界面如下图所示,选择需要加入的文件,我这里勾上BUILD_EXAMPLES其他选项默认;

4、修改完成后再次点击configure进行配置,完成后点击Generate,至此完成配置。





 


使用VS2010编译版本库

以上操作完成后,就可以在生成的目录下找到对应的工程文件,根据上图配置我的文件路径为D:\OpenCV24\OpenCV.sln,使用VS2010打开,进行如下操作。

1、在Debug下,选择解决方案(解决方案资源管理器)里的 解决方案“OpenCV”,点右键,运行"重新生成解决方案";





2、生成成功后,在选择INSTALL项目,右键运行生成;

3、在Release下进行1-2步的操作;

4、以上操作完成后,针对当前的系统的OpenCV库就生成了。


VS的相关配置

也即告诉VC去什么地方寻找OpenCV的头文件和库,打开VC,选择菜单“工具”->“选项”->“项目和解决方案”->“VC++目录”->“包含文件”,在VS2010中此选项打开如下图所示,显示编辑功能被否决。





可以在具体的项目中右键->属性来设置,只是这样的设置无法被继承,每一个项目都需要单独设置,因此需要丛一个能够被继承的全局设置,方法如下:

1、在VS中确保至少有一个工程被打开的情况下,点击“视图”->“其他窗口”->“属性管理器”,然后从左侧任意项目中打开“Debug| Win32”->“Microsoft.Cpp.Win32.user”,如下图所示。



2、在弹出如下图所示的窗口中,添加文件包含与库的路径。点击左侧VC++目录,编辑右侧的包含目录与库目录,分别添加对应的路径。





对应的路径如下:


包含目录

使用提供的库需要添加(对应我自己的安装目录,路径根据个人安装修改)

D:\opencv\build\include

D:\opencv\build\include\opencv

D:\opencv\build\include\opencv2

如果使用的是上文编译的库的路径,则添加(对应我自己的目录,路径根据个人安装修改)

D:\OpenCV24\install\include

D:\OpenCV24\install\include\opencv

D:\OpenCV24\install\include\opencv2





64为系统对应更改。


库目录

在OpenCV的安装文件中已经为VC2008和2010预先编译好了动态库与静态库,因此可以不需要编译直接添加。

针对VS2010添加(对应我自己的目录,路径根据个人安装修改)

D:\opencv\build\x86\vc10\lib

添加上文编译的库则添加(对应我自己的目录,路径根据个人安装修改)

D:\OpenCV24\install\lib

注:有的资料中说法如下:

(注:由于自己编译成功,lib文件在Debug和Release两个文件中,加载库时需到Debug和Release中, 我配置的库目录为:D:\Program Files\OpenCV2.3.1\opencv\build\my\install\lib\Debug,否则调试时无法进入Open CV代码中。 by:Jackyzzy 赵振阳)


但是我的目录下并没有对应的文件夹,反而在D:\OpenCV24\lib目录下有对应的Debug文件夹,文件经过对比也一致,因此这个地方究竟添加什么地方的目前还没有验证,已经验证的同学欢迎告知我。

到这里,配置完毕,任意打开一个项目通过属性来查看,可以看到以上配置已经被继承。


设置环境变量

刚才设置的是动态库,因此还需要将OpenCV的dll文件所在的目录加入Path环境变量。dll文件目录如下:

自己编译的库

D:\OpenCV24\install\bin

使用提供的库(VS2010)

D:\opencv\build\x86\vc10\bin

有的资料中说由于有些函数需要使用TBB,因此需要把TBB相关也添加环境变量,但是我并没有在opencv\build\common\tbb这个路径中找到TBB文件件,在2.4.3版本中经过查找此文件夹存在与opencv\build\common\tbb 路径下,因此这部分同样未验证。

至此,就完成了OpenCV的安装与配置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CMake opencv