Win10下搭建Clion+OpenCV3.2+OpenCV_Contrib3.2的环境

        不久前我终于受不了笨重的VS2015了,转而使用清爽的Clion,之前一直用的是OpenCV3.1,现在也换OpenCV3.2了,可是OpenCV3相比于OpenCV2最大的坏处就是那些特征匹配算法相关的函数都放在了OpenCV_Contrib扩展包里了,在你编译OpenCV3.2源代码的时候,要带着OpenCV_Contrib3.2的扩展包一起编译,这样你才能用SIFT、SURF等特征匹配的算法。长话短说,接下来介绍如何在WIN10平台下,搭建Clion+OpenCV3.2+OpenCV_Contrib3.2的环境。
        需要准备的东西如下:以下东西都可以从我的网盘链接里去下载:http://pan.baidu.com/s/1hs1kde8
有:OpenCV 3.2的源代码安装包:opencv-3.2.0-vc14.exe;OpenCV3.2的扩展功能包:opencv_contrib-3.2.0;
       cmake安装包:cmake-3.8.0-rc1-win64-x64.msi
       Gcc编译器:tdm64-gcc-5.1.0-2.exe
       Opencv在Cmake的时候需要下载的文件:ffmpeg.zip,ippicv.7z
       当然还需要安装git,git的下载和安装请另行解决,过程很简单,不在这里展示

步骤一:安装各种工具
安装Gcc编译器:双击tdm64-gcc-5.1.0-2.exe
安装cmake:双击cmake-3.8.0-rc1-win64-x64.msi
安装Opencv3.2:其实就是解压源代码包,双击opencv-3.2.0-vc14.exe,我的话,将其解压到一个OpenCV3.2的文件夹中了,解压后你会发现在OpenCV3.2的文件夹中有个Opencv文件夹,里边有build,source两个文件夹
将opencv_contrib-3.2.0的文件夹复制到\Opencv3.2\opencv文件夹中

步骤二:执行Cmake
在Opencv3.2\opencv目录下,新建一个mingw_build文件夹,用来放源代码编译产生的东西,然后整个Opencv3.2\opencv目录下是这个样子:共4个文件夹了

在执行cmake之前,还需要复制一些东西:
解压从我网盘下载的ffmpeg.zip压缩包,将其中的downloads文件夹复制到Opencv3.2\opencv\sources\3rdparty\ffmpeg\目录下
解压从我网盘下载的ippicv.7z压缩包,将其中的dowmloads文件夹复制到Opencv3.2\opencv\sources\3rdparty\ippicv\目录下
这个操作是提前将cmake过程中要下载的东西放到了指定目录下,否则cmake的时候会因为这些东西下不下来而失败

以上操作完成之后,就执行Cmake安装好后得到的cmake-gui软件,准备cmake:
先配置好源文件路径和编译输出文件夹的路径,分别如下:

然后,点击下面的config按钮,就会让你选择编译器,我们选择minGW Makefiles

点击finish之后,就开始cmake的config了,config完后,结果如下:


出现Configuring done之后,需要再次点击一下config,让这片红色消失:

再次Configuring done之后,就点击generate,开始生成makefile文件
再Configuring done的基础上看到了Generating done,说明generate完成了

接下来添加扩展包路径,再次执行config和generate的操作:
添加扩展包的路径的方法如下,再cmake_gui的窗口中找到OPENCV_EXTRA_MODULES_PATH这一项,可以看到是空白的,我们将OpenCV_contrib3.2的modules文件夹路径添加进来,如下所示:

然后再次点击configure,跟之前一样,也会出现红色,然后再次点击configure,红色消失,说明config完成,
然后就点击generate,出现generating done 就说明Opencv3.2的扩展包也cmake完了,扩展包cmake的图片就不贴出来了,反正跟上面三幅图是一样的。

当扩展包的cmake也出现Generating done之后,我们就可以开始执行cmake生产的makefile文件了,即开始编译链接的工作


步骤三:编译链接cmake生产的makefile文件
在cmake的目标文件夹中,即路径\Opencv3.2\opencv\mingw_build下,单击右键,选择Git Bash Here,前提是你要已经安装了git
然后就打开了git bash的命令行窗口,
输入指令mingw32-make -j8,开始执行编译链接工作,如下所示:

然后你需要苦苦等待,看着编译进度从0%开始一点一点往上加,如果出现100%不报错,那么你就成功了,如下所示:

        当然,很可能失败,如果失败了,不要慌,如果是recipe for target "all"的error,那么就网上滚窗口,找到具体error出现在哪里,然后你可能看到什么文件名中带有hdf的报错内容,或者跟python相关的内容,或者其他,这个时候,有一个解决办法如下:
        其实那么大一个Opencv的源代码,可能会由于各种各样的原因,出现某些包没法编译的现象,而且基本上也是我们不怎么用得到的包,那么我们大可以不选择编译这些包,这样就不会出现上面的那些error了
        那么怎么去决定那么不要编译呢,那你就要回到cmake_gui界面了,如下所示:

这里打勾的就是说你要编译的,取消打勾就不会去编译,不过讨厌的是,你不仅仅只要去掉那些对应模块的钩子那么轻松,去掉钩子之后,你需要再次去掉OPENCV_EXTRA_MODULES_PATH中的内容,然后config,然后generate,然后再加上OPENCV_EXTRA_MODULES_PATH中的内容,然后再config,再generate,也就是说要重新走步骤二
走完后,再次再Git Bash命令行中执行mingw32-make -j8,这次你应该能轻松到100%了

步骤四:执行Install,生产我们最终想要的动态链接库
上面走到100%后,就可以输入mingw32-make install命令了,如下所示:

这次也是从0%到100%跑,不过过程会短的多,而且应该不会有什么Bug出现了

OK,走完以上这些,基本上就大功告成了,接下来我们就为写OpenCV的代码做准备工作

步骤五:写OpenCV代码前的准备工作
所谓准备工作,就是编译完成Opencv和它的扩展包之后,需要配置环境变量,然后做一些文件复制的工作,不过这些都是一劳永逸的,完成一遍就好了
第一,配置环境变量,再系统环境变量的Path中添加C:\OpenCV3.2\Opencv3.2\opencv\mingw_build\install\x64\mingw\bin,即把你生成的动态链接库的地址告诉系统,当然这个路径具体是你自己的路径,不要完全复制我的这个路径。

第二,将C:\OpenCV3.2\Opencv3.2\opencv\mingw_build\install\include中的opencv和opencv2两个文件夹复制到你安装Tdm64-gcc的安装目录的include目录下:

OK,这样的话,准备工作就完成了


步骤六:打开Clion,前提是你安装好了Clion,新建工程,配置编译工具链,配置cmakefiles文件,写测试代码,测试
打开Clion,点击工具栏的file,然后选择new,就出先如下界面:选择第一个C++ Executable类型即可,C++11也不用改,配置好你的工程路径和工程名之后,就点击create即可

第一次建工程的话,可能需要配置clion的编译工具链,你可从工具栏file->setting中找到如下界面:

在右边的MinGW Home中填入你安装TDM-GCC-64的安装路径即可,然后它下面就会回自动识别出来工具栏具有哪些内容,应该会看到Cmake:3.8.2下面三条内容都还没刷出来,需要等待其刷出来,跟我这个图片一样就OK了,点击OK,关掉setting的界面

然后你会看到相比VS2015,clion工程中只有cmakefiles和main.cpp两个文件,我们只需要配置好Cmakelist文件的内容后,就可以编写main.cpp了
cmakefiles的内容如下:
请忽略中间那个http://的内容,这是截图没截好的原因
你需要添加一些内容,变成如下所示:
自己寻找不同,添加了一些内容,注意,划红线的内容就是你的工程名,要保持一致,蓝线的内容是也要是你自己对应的路径,不要直接用我的这个。
cmakefiles改完后,提示你要不要reload的时候,选择auto reload,如果下面窗口没有红色的报错,那么恭喜你改成功了,如下所示:

最后,你就放心写的你代码去吧,我的测试代码如下:

其中,如果你能导入xfeatures2d的包,那么说明你的扩展包也编译成功了
执行结果就是显示一张很经典的图片:当然你需要提前将1.jpg这张图片放在你的工程目录的cmake-build-debug文件里边

虽然过程比较辛苦,但是最终实现了还是挺开心的对吧,我也只是个啥都不懂的程序员,希望大家一起努力啦~

猜你喜欢

转载自blog.csdn.net/qq_25109263/article/details/76945395