1、下载CMake。

http://www.cmake.org/cmake/resources/software.html。下载二进制分发包,如下图所示:

linux QT如何构建脱离opencv动态库能单独运行的程序_编译


    2、下载OpenCV

下载地址:http://opencv.org/。到目前(2014年5月30日)最新的版本是Version 2.4.9,保存下载的文件opencv-2.4.9.exe,双击运行,可以将内容提取到指定的文件夹。


    3、确保已正常安装Qt(截止目前最新版5.3.0),安装很简单,具体方法就不写了。

    4、添加Qt的环境变量:

    C:\Qt\Qt5.3.0\5.3\mingw482_32\bin

    C:\Qt\Qt5.3.0\Tools\mingw482_32\bin

    C:\Qt\Qt5.3.0\Tools\mingw482_32\i686-w64-mingw32\bin

    具体路径请见Qt实际的安装目录。

    5、打开CMake,用CMake来编译OpenCV。

    配置源码路径和生成路径。源码路径就是从opencv-2.4.9.exe里提取到的路径。生成路径可以自己制定,比如我这里路径是.../OpenCV_CompileResult。具体参见下图:

linux QT如何构建脱离opencv动态库能单独运行的程序_编译_02


    6、点击Configure,下拉菜单选择MinGW Makefiles,下面的4个选项就选择默认的第一个。CMake用到的参数会到环境变量里去找。

linux QT如何构建脱离opencv动态库能单独运行的程序_Qt5.3.0_03


    8、以下是Configure的过程。

linux QT如何构建脱离opencv动态库能单独运行的程序_Qt5.3.0_04


linux QT如何构建脱离opencv动态库能单独运行的程序_配置_05


    9、Configure结束,会出现粉红色背景的各种选项。拖动滑块到页面下部位置,找到以下两个选项:WITH_OPENGL,WITH_QT,在其后的勾选框内点击打钩。

linux QT如何构建脱离opencv动态库能单独运行的程序_Qt5.3.0_06


    10、然后点击generate按钮,开始生成makefile文件。


linux QT如何构建脱离opencv动态库能单独运行的程序_配置_07


    生成成功后,页面底部会提示Generating done。这时,这个CMake窗口可以关闭了。


linux QT如何构建脱离opencv动态库能单独运行的程序_OpenCV 2.4.9_08


    11、打开命令窗口,用cd命令转到刚才我们设置的目标路径下。输入命令mingw32-make开始编译。这个过程比较漫长,根据电脑配置,从30分钟到60分钟不等。

linux QT如何构建脱离opencv动态库能单独运行的程序_OpenCV 2.4.9_09


    编译结束的情况:

linux QT如何构建脱离opencv动态库能单独运行的程序_配置_10


    12、接下来,输入mingw32-make install命令:

linux QT如何构建脱离opencv动态库能单独运行的程序_OpenCV 2.4.9_11


13、编译结束,提取我们需要的库文件。

    1,OpenCV提取目录下的build/include目录,我的目录是:D:\Work\Video\opencv\build\include

    2,CMake目标路径下,MinGW编译后的bin目录,我的目录是:D:\Work\Video\SelfCompile\OpenCV_CompileResult\bin

    3,CMake目标路径下,MinGW编译后的lib目录,我的目录是:D:\Work\Video\SelfCompile\OpenCV_CompileResult\lib

    将这3个文件夹拷贝出来放到一起,其他的文件没用啦,可以删除。


14、将MinGW编译后的bin目录添加到PATH环境变量。

15、下面我们可以测试一下,OpenCV库是否编译成功。

    打开Qt,新建一个空的Qt项目,在pro文件中输入:

linux QT如何构建脱离opencv动态库能单独运行的程序_Qt_12


16、在Qt里新建一个main.cpp文件,在其中输入以下代码:

#include"cv.h"
#include"cxcore.h"
#include"highgui.h"



int main()


{


//声明IplImage指针
IplImage *pImg;
//载入图片
pImg=cvLoadImage("E:/qt project/sd4/text.jpg",1);    //图片路径
//创建窗口
cvNamedWindow("Image",1);
//显示图像
cvShowImage("Image",pImg);
//等待按键
cvWaitKey(0);
//销毁窗口
cvDestroyWindow("Image");
//释放图像
cvReleaseImage(&pImg);



return 0;


}

    编译运行,这时会发现debug窗口出现错误提示,

TestOpenCV_Qt.exe crashed

    但从资源管理器进入debug目录,双击运行已经生成的TestOpenCV_Qt.exe文件,这时会弹出以下文件:

linux QT如何构建脱离opencv动态库能单独运行的程序_配置_13


    至此,OpenCV库配置成功。