【OpenCV】配置OpenCV 3.2.0 + OpenCV contrib + eclipse + Cmake3.9 + MinGw(TDM-GCC 5.1)

来源:互联网 发布:java list排序函数 编辑:程序博客网 时间:2024/06/05 05:02


前言:最近因学习需要,学习OpenCV,考虑linux/window的通用决定使用eclipse学习,学习才发现没那么通用,linux下面eclipse直接cmake 支持,需要对opencv路径配置,到了window配置又不同了,算了就这么用吧,回到window发现eclipse需要Mingw的支持来进行编译,官网提供的opencv3.2 既没有contrib工具又没有wingw的编译版本,只提供了vs系列的编译版本,看来只能自己生产了。


一、来个技术介绍


opencv:OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

opencv分为1.0(c语言),2.0(c++),opencv3+版本将不成熟的算法单独做成contrib(github)包,需要的人得自己一起编译。很多人直接只用window的包在vs下使用,都没自己编译的经验。

cmake:CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。

MinGw :MinGW,是Minimalist GNUfor Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。MinGW 是一组包含文件和端口库,其功能是允许控制台模式的程序使用微软的标准C运行时(C Runtime)库(MSVCRT.DLL),该库在所有的 NT OS 上有效,在所有的Windows 95发行版以上的 Windows OS 有效,使用基本运行时,你可以使用 GCC 写控制台模式的符合美国标准化组织(ANSI)程序,可以使用微软提供的 C 运行时(C Runtime)扩展,与基本运行时相结合,就可以有充分的权利既使用 CRT(C Runtime)又使用 WindowsAPI功能。

MinGw 我推荐使用TDM-GCC,它是一种开源实现,对新的c++支持好。


eclipse:这就不介绍了,这里使用了Oxygen版,下载地址。

二、编译安装步骤

1.下载最新的cmake-gui,我用的3.9.0的,打开如下:

2.where is source code 那里选择你的源码,下面那个输入选择你的目标编译,下面我们点击configure,选择MinGw MakeFile,四个单选,选择第一个前提是环境变量配置好TDM-gcc或者其他的mingw,保证能获取gcc g++的路径,否则可以选择第二个单选,自己选择c c++的编译器路径。

3.点击finish,开始文件配置。

此时配置完成

4.现在来配置contrib部分,在红色区域找到指定key进行参数设置。

建议:


a.去掉两个tests的勾勾加快编译

b.去掉WITH_VTK

c.在BUILD_opencv_*这里会有一个python的模块,我这里没有环境所以没选项,如果你有BUILD_opencv_python,先勾选,之后如果出现python路径错误,重新来一次,去掉此处的勾。(请仔细看参数,首先确保python开头的参数的路径识别都正确)

现在配置contrib路径,找到OPENCV_EXTRA_MODULES_PATH,选择到你的contrib包的modules下面(这里特别注意,主程序用的版本和contrib版本需要保持一致,避免错误发生,github的contrib默认下载的是最新测试版,请选择commit、branch后面的release,选择跟主程序一样的版本的下载包,如下截图)



5.我们再次点击configure,会出现contrib里的模块,此处hdf模块建议在后面编译出错的前提下,重复到此处勾掉hdf模块,可能出现错误,hdf的解释自行百度,一般不需要,contrib包用的多的是dnn以及SURF的特征点。


6.确认下参数没错的话可以点击generate,进行生成


************注意************

在这里可能会出现download失败的情况,需要自己下载对应文件放在对应的目录下,我这里提供我发现的文件,随着时间,很多旧包可能无法正常下下来,有文中没有提及的可以百度或者私我。

源码source的3rdparty下的ffmpeg,ippicv,以及contrib包的modules的xfeatures2d(cmake里的.download文件夹)出现文件下载异常,我先提供的我的压缩包,当出现问题进行替换即可(我的是opencv3.2.0,如果版本不对可以百度搜索正确版本)

xfeatures2d:点击打开链接

ffmpeg:点击打开链接

ippicv:点击打开链接

*****************************


7.进入编译目录

按住shift+鼠标右键选择此处打开命令窗口,输入mingw32-make,等待佳音:



编译完成啦,我们保存bin,lib就可以了,将bin路径加入环境变量中。

8.eclipse配置了

项目右键最后一个属性

注意红色方框的地方c++ compiler 的includes配置hpp头文件的地方,contrib包下的hpp在源代码的各自模块的文件夹include里,需要的模块自行导入就可以了。然后在项目的includes可以看到导入的头文件。


接着我们要配置lib:
依然是红色方框(编译的是release 就选release,否则就是debug);
lib path就是编译完成后的lib路径,上面的lib就是对应模块的文件名,去掉后缀以及开头的lib就是这里需要填写的,如果程序编译提示方法错误,首先要看模块在这里是否导入了;

9.window 的 mingw 编译 之后运行是会中文乱码的,我们需要加上一个命令:


依然是截图说明一切,-fexec-charset=GBK 加上就不会乱码了,具体百度说明原理。

10.编译程序及运行


依然截图介绍(好累):
步骤1:选中项目
2:选择你的模式
3:开始编译
4:看图看图
配置run confugurate,按图来啊

************************************注意*************************************

如果程序加载的图片,编译之后,将用到的图片一起放到release 或 debug下面,否则程序运行异常(Linux就没这么麻烦,还是用linux去)

******************************************************************************

11.现在你就可以跑起来你的opencv程序了,来张博主学习的demo

ps:有什么问题可以联系我

Email:lcx1995@foxmail.com

QQ:346640094 备注下来源 QQ:346640094 备注下来源

原创粉丝点击