使用MinGW编译OpenCV库
系统环境与资源
MinGW编译器目录:TDM-GCC版,位于D:\complicer\MinGW
OpenCV源码目录:D:\mysoftware\opensource\opencv
OpenCV安装目录:D:\mysdk\opencv24
CMake安装目录:D:\tools\cmake
参考网址
TDM-GCC:http://sourceforge.net/projects/tdm-gcc/files/TDM-GCC%20Installer/tdm-gcc-4.6.1.exe
TDM-GCC安装参考教程:http://hi.baidu.com/jh_shot/blog/item/fecae10c5f1fe98a0b7b826d.html
OpenCV源码SVN下载链接:http://code.opencv.org/svn/opencv/trunk
http://code.opencv.org/svn/opencv/branches/2.4
OpenCV安装文件:http://sourceforge.net/projects/opencvlibrary/files/
CMake下载地址:http://www.cmake.org/files/v2.8/cmake-2.8.8-win32-x86.zip
MinGW64:http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/release/
官方编译wiki:http://www.opencv.org.cn/index.php/Mingw%E7%BC%96%E8%AF%91%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC%E7%9A%84OpenCV%E4%BB%A3%E7%A0%81
准备工作
安装TDM-GCC编译器,安装方法可以Google搜索,主要是把编译器的bin文件夹添加到系统的path中。下载OpenCV源码(最好使用发布版的源码,SVN版可能会出现莫名其妙的问题)和CMake,并放到相应的目录中准备好编译环境,所有路径最好全英没空格。个人的系统环境如上,可以用作参考。
配置生成Makefile
运行CMake,即CMake安装目录中bin文件夹下的cmake-gui.exe文件。选好OpenCV的源码目录和安装目录。
点击Configure出现下面的选项Makefile类型的对话框。在这里,使用默认的MinGW Makefiles和Use default native complicers。
点击Finish后,Cmake会进行配置,需要一点点的时间。完成后,出现下面的界面,红色部分是配置的参数,最下面的是信息输出。从下面的输出信息中,可以看到编译好后,安装的目录是D:\mysdk\opencv24\install。红色的配置参数部分,可以依自己的需要进行配置。
我在其默认的基础上,进行了一些更改。
1、去掉了BUILD_WITH_DEBUG_INFO的勾,不生成调试信息,开发中一般不会调试到OpenCV的内部。
2、CMAKE_BUILD_TYPE的值设为Debug,本来应该使用Release。
3、把ENABLE_SSE2去掉,不启用SSE2指令加速。
这里的第2、3条是针对这个编译器修改的,如果没有做出这些更改,在使用OpenCV的highgui模块时,会引起程序崩溃,据stackoverflow上面的讨论,是由于MinGW编译器对windows下的SSE2指令的支持有些问题。如果使用VC编译器相信不会有上述的问题。
经测试,OpenCV2.4版本中,BUG已修复,可以使用Release和启用SSE2。
修改完之后,再次Configure,会去掉红色的显示,表示最终的配置参数。点击Generate后,会在OpenCV的安装目录(D:\mysdk\opencv24)下生成Makefile。至此,配置完成。
编译与安装
运行CMD,进入OpenCV安装目录,运行mingw32-make -f Makefile进行编译,大约要一个小时左右,待编译完成后,运行mingw32-make -f Makefile install进行安装。最后会在OpenCV的安装目录下的install目录下,看到编译好的库和头文件,这些是最终需要的文件。可以把OpenCV安装目录下除install文件夹外的其它东西全部删除,然后把install文件夹里面的东西复制到OpenCV安装目录下。
如果编译出现错误,可以试试MinGW64里面提供的编译器,或者使用发布版的源代码,地址详看参考网址。
注意:也可以使用mingw32-make和mingw32-make install进行编译,安装。
编译好的库
编译好之后,在安装目录下的install目录,就是编译好的库和头文件。