QT编译opencv

编译opencv

  1. 确认Qt成功找到 CMake
    打开 Qt Creator,工具->选项->构建和运行->CMake,如果之前 CMake 配置好了系统路径,这里应该会自动加载到系统路径,否则手动指定CMake的路径。

  2. 用 Qt 打开 opencv 项目
    【Open Project】打开 opencv 的 CMakeLists.txt

    之后会出现一个 Configure Project 窗口,配置编译时产生的中间文件保存的路径,这些不用改,直接点击 Configure Project 按钮。中间文件会保存在跟 opencv 的文件夹在同一路径的一个文件夹,编译完删掉就好了。

  3. 进入【项目】,编译构造配置选择Release。

    然后等几分钟,这段时间 Qt 正在读取 CMakeLists.txt 文件,当在概要信息看到 Configuring done 和 Generating done 就读取完了。

  4. 进入【项目】,找到 CMAKE_INSTALL_PREFIX,设置一个路径,这个路径是编译完成后输出的路径。其他配置保持默认。然后点击 Apply Configuration Changes。未保存的内容会是粗体字,已改变的配置将会是斜体字,再点一次 Apply Configuration Changes,Apply Configuration Changes 按钮将会变成灰色。

  5. 再到构建步骤,详情,勾选install,然后点右下角的“锤子”,开始构建。构建过程要保持网络通畅,因为构建时会下载部分文件。这个过程会花半个小时左右,当“编译输出”中显示“正常退出”,表示构建成功,在 CMAKE_INSTALL_PREFIX 路径中可以看到产生的文件。如果编译失败,则换个opencv版本,重新尝试。

  6. 配置opencv开发环境

    编译好的opencv会有以下这些文件夹,把这些文件放到合适的位置。我就放在c盘opencv文件夹里了。

    1. 配置opencv系统路径
      对计算机右键->属性->高级系统配置->环境变量>Path 变量里加入 opencv 的 bin 文件夹的路径,用分号跟其他路径分隔。

    2. 新建Qt项目

      常用的项目类型的说明:

      • Qt console Application:Qt的控制台项目,不创建Qt的图形界面,只会打开一个cmd窗口。
      • 【Non-Qt Projectt】->plain C/C++ Application:创建的项目不带有Qt的库,最适合学习C/C++。创建后主程序就已存在一个Hello World!示例。

    3. 给qt项目添加头文件路径和静态库路径
      在.pro文件中添加以下代码。每次新建项目都要添加,好在复制粘贴很方便。

    INCLUDEPATH += C:/opencv/include \
                   C:/opencv/include/opencv \
                   C:/opencv/include/opencv2
    
    LIBS += C:/opencv/x86/mingw/lib/libopencv_*


    测试

    新建一个plain C/C++ Application,写入以下代码,cvLoadImage( )函数里填入一张照片的路径,如果能编译成功并显示照片就配置成功了。

    注意文件的路径是正斜杠,不是windows路径的反斜杠,如果用反斜杠得这样写:"D:\\Pictures\\RoboMasters.jpg"

    #include "opencv/highgui.h"
    
    int main(int argc, char *argv[])
    {
        IplImage* img = cvLoadImage("D:/Pictures/RoboMasters.jpg");
        if (img == NULL)
            return 1;
        cvNamedWindow("abc",CV_WINDOW_AUTOSIZE);
        cvShowImage("abc",img);
        cvWaitKey(0);
        cvReleaseImage(&img);
        cvDestroyAllWindows();
        return 0;
    }
    

    关于Qt的动态库

    在Qt中用Ctrl+R可以成功运行程序,但是直接双击程序运行却会提示缺少libgcc_s_dw2-1.dll,这是因为缺少Qt的动态库。

    解决方法是发布软件时把动态库添加到工程目录里。方法如下:

    1. 添加系统环境路径
      C:\Qt\Qt5.7.0\5.7\mingw530_32\bin
      C:\Qt\Qt5.7.0\Tools\mingw530_32\bin
      两个路径之间用分号“;”分隔。

      做完这一步可以在自己电脑直接双击打开编译好的软件 ,但是在别人电脑里依然是缺少文件。

    2. 打包动态库
      Qt 官方开发环境里自带了一个工具:windeployqt.exe。
      win+r 然后输入 cmd 打开命令提示行,切换到编译完的软件目录下,假设软件名叫 abc.exe,在命令行里输入 windeployqt abc.exe,就会把需要的动态库都复制到该软件目录下。


你可能感兴趣的:(QT,opencv)