使用cmake进行opencv_contrib的编译
最近在学习视频稳像的知识,opencv2里面包含surf、orb和sift几种提取特征点的函数,但是在opencv3里面,surf和sift等一些模块被放到了一个叫opencv_contrib的拓展模块里,如果需要用的话,在安装opencv3之后就需要下载一个cmake来进行编译。网上已经有许许多多其他的方法,但我仍然失败了好多次,在此分享我正确安装的方法:
1、首先在opencv官网下载opencv3(我用的3.0);
2、然后在https://github.com/opencv/opencv_contrib这里下载一个opencv_contrib;
3、在cmake官网下载一个cmake。https://cmake.org/download/;
4、安装好opencv和cmake;(这里建议opencv不要放在Program Files里面,因为这里有一个空格,会影响后面有一个地方的操作!!)我的路径是D:\personal\opencv。
5、把opencv_contrib放在opencv的modules这个文件夹里!!(我之前放外面一直操作不对,心塞好久)我的路径是D:\personal\opencv\sources\modules。
6、打开cmake,界面如下图所示:(本来是没有红色的,我的这个可能是我的source code 和binaries两个路径里面有其他东西,所以这样,没关系的。)
7、给source code一个路径,这里应该是opencv的source。我的路径是D:\personal\opencv\sources;
8、给binaries一个路径,这里比较随便一点,可以就放在opencv下面。我的路径是D:\personal\opencv\mybuild;
9、然后点击Configure。这个时候会跳出来一个选择编译器的窗口,这个根据你使用的VS的系统来选择,我的系统是VS2013,使用的64位进行编译。所以我的选择是:
10、编译好后会出现下面一个界面:
注意,这里如果没有看到Configuring done,就再点一次Configure试试。
11、然后点击Generate。出现以下界面:
我们看到Configing done 和Generating done。
12,找到OPENCV_EXTRA_MODULES_PATH。(有的人的opencv_extra_modules_path 是在opencv下面的一个子项目,一样的。)在后面的路径里填上opencv_contrib下的modules。我的路径是:D:/personal/opencv/sources/modules/opencv_contrib-3.0.0/modules
13,设置好路径,再点一次Configure 和Generate。再一次出现Configing done 和Generating done之后就可以愉快的关掉cmake了。
14、打开刚才binaries中那个路径下的opencv.sln。就会弹出VS的界面(喔,所以在使用这些东西的时候请还要安装VS哈。其实前面就已经用到了好像)。
15、在VS的解决方案资源管理器中找到cMake Targets。
16、在INSTALL这里右键,选择仅用于项目然后选择仅生成INSTALL。这里网上也有人提到直接生成整个工程,我感觉这花费时间太长,而且一百多个项目不一定会全部成功生成,不用担心啊,只要这个INSTALL生成好了,就可以了。
如果生成成功就会出现下图:
17、现在可以去mybuild那个文件夹的下看看,是不是有了include这个文件夹,这个和opencv里面的include一样的。
18、现在新建一个VS项目,开始设置你的包含目录和库目录。如下图:
19、设置附加依赖项,这个根据你的mybuild中的lib中的那些项目来确定。如果是debug模式,注意格式是xxd.lib。如果是release模式,格式是xx.lib。我的路径是D:\personal\opencv\mybuild\install\x64\vc12\lib