【Qt+OpenCV项目开发学习】一、环境配置

一、前言

首先交代一下为什么选择Qt+OpenCV这个角度来写博客。在机器视觉行业,有强大的Halcon视觉库,但是它是收费的,所以很多公司开始考虑使用开源免费的OpenCV计算机视觉库来做机器视觉项目。机器视觉项目通常要开发Windows平台下的图形用户界面应用程序,选择有C++的MFC或Qt和C#。MFC太难入门与学习,Qt和C#入门门槛低。此外由于OpenCV是C/C++编写的,所以最终我选择了Qt。其实Qt由于其强大的跨平台能力,在Linux平台下应用更为广泛。现如今在机器视觉行业,大部分企业还是选择VB、MFC或C#来开发的。但我相信在这个行业,会越来越多的人使用Qt来开发项目。

二、相关软件下载及安装

开始环境配置之前,当然是要先下载相应的软件包。我们配置前需要三个东西:Qt Creator集成开发环境,OpenCV源码,cmake编译器。下载链接如下:

cmake下载链接:https://cmake.org/download/

OpenCV下载链接:https://opencv.org/releases.html

Qt Creator下载链接:https://download.qt.io/official_releases/qt/

cmake是用于将OpenCV源码编译成Qt Creator能使用的库。链接打开后,如下图所示下载。我的电脑是64位的所以选择X64位的。选择msi文件是安装包,zip文件是不用安装,解压后在bin文件夹下就可以找到执行程序并使用(cmake-gui.exe)。

【Qt+OpenCV项目开发学习】一、环境配置_第1张图片

对于OpenCV来说,我们下载的是源码而非exe文件。这是因为exe文件只针对特定的平台,即VC14/VC15 64位的。下载链接打开后按下图所示下载。版本很多,你可以选择不同版本,我选择3.4.5的,然后点击Sources就可以下载了。

                                        【Qt+OpenCV项目开发学习】一、环境配置_第2张图片

对于QtCreator的下载,类型种类繁多。如下图所示。选择一个版本进去(我选择了5.6/5.6.1版本),可以看到很多exe文件,我们根据自己的电脑情况下载相应版本即可。不管你的电脑是Windows的X86还是64,都下载Windows-X86,后面的是编译器类型,我们本次选择的是mingw,所以按图提示下载。为什么不选MSVC2013/MSVC2015,如果要下载这类,首先你要根据你电脑安装了哪个版本的VS来选择(64位系统的要选择MSVC2013_64的),安装成功后,QtCreator不能调试,会提示你没有调试器,你还要额外安装调试器,太麻烦和折腾了。MinGW其实就是GCC编译器。下载成功后,安装很简单,自行百度教程。

【Qt+OpenCV项目开发学习】一、环境配置_第3张图片

 

【Qt+OpenCV项目开发学习】一、环境配置_第4张图片

三、环境配置

上一步完成后,我们就可以进行配置了。配置过程分为编译OpenCV源码(难点)和在项目中添加OpenCV库路径。在编译前要配置好环境变量。我增加的是“C:\Qt\Qt5.6.1\Tools\mingw492_32\bin和C:\Qt\Qt5.6.1\5.6\mingw49_32\bin;”个人根据Qt的实际安装路径增加路径。环境变量的添加是在桌面右键计算机图标,属性->高级系统设置->高级->环境变量->path。

3.1 Cmake编译OpenCV源码

1. 首先将下载的OpenCV的源码压缩包解压,随便放在磁盘的什么文件夹下都行,由于我既有用于VS的OpenCV又有Qt的,所以我索性将其放在了Qt的安装目录下。然后新建source和build两个文件夹,分别用于存放源码(source文件夹,将解压文件夹下的所有东西都放入其中,如下图所示)和用于存放待会的编译内容(build文件夹)。

【Qt+OpenCV项目开发学习】一、环境配置_第5张图片

2. 运行cmake程序。解压下载的文件,在双击bin文件夹下的cmake-gui.exe。打开后界面如下:

【Qt+OpenCV项目开发学习】一、环境配置_第6张图片

3. 选择要编译的源代码路径和编译后存放的路径,分别点击Browse Source和Browse Build,然后根据存放位置选择OpenCV路径,勾选上grouped和advanced,如下图所示。

【Qt+OpenCV项目开发学习】一、环境配置_第7张图片

4. 点击Configure设置编译器类型等。点击Configure后弹出对话框。选择MinGW Makefiles和Specify native compilers,然后点击Next。

【Qt+OpenCV项目开发学习】一、环境配置_第8张图片

下一步要设置编译器。给C选择gcc.exe,C++选择g++.exe。他们的路径在Qt的安装路径的..\Qt\Qt5.6.1\Tools\mingw492_32\bin下。选择好后,点击Finish。

【Qt+OpenCV项目开发学习】一、环境配置_第9张图片

5. 然后它会进行一番配置,等待他结束。结束后,会有一些红色提示。如下图所示。

【Qt+OpenCV项目开发学习】一、环境配置_第10张图片

6. 修改上述红色部分。WITH下,勾选上WITH_QT和WITH_OPENGL;此外在ENABLE下找到ENABLE_CXX11勾选上,如果不勾上,在下面的步骤9时会报关于 nullptr C++11之类的错误;BUILD中不勾选BUILD_opencv_python3和BUILD_opencv_python_bindings,将PYTHON2和PYTHON3下的全空着,别填路径。在configue,当还是有红色提示时,接着configure,最终成功如下所示,高亮部分没有红色错误提示,最下面提示configuring done。

【Qt+OpenCV项目开发学习】一、环境配置_第11张图片

7. 点击Generate,完成标志如下所示。最下方提示Generating done。至此就可以关闭cmake了。

8.打开cmd。方法是首先进入找到你前面新建的OpenCV的build文件夹,可以看到这里面有很多东西了,之前是空的。然后在此文件夹下空白处按住shift+鼠标右键,在菜单中选择“在此处打开命令窗口”,如下图所示。注意千万别鼠标选中了某个文件/文件夹后这样操作,这样下拉菜单就和下图不一样了,并且没有我们要选择的。

【Qt+OpenCV项目开发学习】一、环境配置_第12张图片

9.打开cmd后,打入指令“mingw32-make”,然后回车,等待指令执行完毕,时间稍微有点长,如下图所示。

【Qt+OpenCV项目开发学习】一、环境配置_第13张图片

这个过程中可能会有一些错误导致执行终止。当错误提示是dshow.cpp(或cap_dshow.cpp)文件出错时(如下图所示),找到这个文件并打开它,把文件中的sprintf函数名全部换成sprintf_s,使用qt creator打开文件,采用查找与替换功能实现,然后保存文件。再次执行上述指令“mingw32-make”。

【Qt+OpenCV项目开发学习】一、环境配置_第14张图片

10.上述指令执行完毕后,输入指令“mingw32-make install”,回车,等待指令执行完毕,至此整个编译过程完成。如下图所示。

【Qt+OpenCV项目开发学习】一、环境配置_第15张图片

【Qt+OpenCV项目开发学习】一、环境配置_第16张图片

11. 将编译好的OpenCV库增添到环境变量中去。根据你自己OpenCV存放的位置增添,我的完整路径如下,供你们参考:

C:\Qt\opencv345\build\install\x86\mingw\bin

3.2 项目配置并测试

1. 新建项目。打开Qt Creator,新建项目->Qt Widgets Application->项目路径&项目名(不能含有中文)->工具选择Desktop Qt 5.6.1 MinGW 32bit ->基类选择QMainWindow->后面直接下一步到完成项目创建。点击左侧的项目,不勾选Shadow build,如下图所示。

【Qt+OpenCV项目开发学习】一、环境配置_第17张图片

2. 修改pro文件。点击左侧的编辑,打开项目中的pro文件,在文件最后面添加如下代码,每个人文件路径存放有些不同,记得修改为自己的路径。注意LIBS添加是要把bin文件夹下的所有Lib文件都添加,此外路径前“-L”和库文件名前的“-l”别删了。改完后记得保存,不然后面编写包含头文件时,搜索不到相应的头文件。

win32
{
    INCLUDEPATH += C:\Qt\opencv345\build\install\include
    INCLUDEPATH += C:\Qt\opencv345\build\install\include\opencv
    INCLUDEPATH += C:\Qt\opencv345\build\install\include\opencv2


    LIBS += -LC:\Qt\opencv345\build\install\x86\mingw\bin \
            -llibopencv_calib3d345 \
            -llibopencv_core345 \
            -llibopencv_dnn345 \
            -llibopencv_features2d345 \
            -llibopencv_flann345 \
            -llibopencv_highgui345 \
            -llibopencv_imgcodecs345 \
            -llibopencv_imgproc345 \
            -llibopencv_ml345 \
            -llibopencv_objdetect345 \
            -llibopencv_photo345 \
            -llibopencv_shape345 \
            -llibopencv_stitching345 \
            -llibopencv_superres345 \
            -llibopencv_video345 \
            -llibopencv_videoio345 \
            -llibopencv_videostab345 \
}

3.编写MainWindow.cpp文件。在源文件目录下打开MainWindow.cpp文件,编写内容如下。

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include  //添加的第一句
#include  // 添加的第二句

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    cv::Mat img = cv::imread("1.png"); //添加的第三句
    cv::namedWindow("src image");  //添加的第四句
    cv::imshow("src image", img); //添加的第五句
}

MainWindow::~MainWindow()
{
    delete ui;
}

4.编译运行看结果。在编译前,要记得在项目文件夹下放入一张图片(1.png),没有的话,程序就会报错。我的编译运行结果图如下。

【Qt+OpenCV项目开发学习】一、环境配置_第18张图片

四、总结

恭喜你,这么复杂的环境配置成功了,可以快乐的写项目了。如果你们在这个过程中有什么新问题,欢迎留言提问。我会把我编译成功的OpenCV文件上传到CSDN,供懒得编译OpenCV的人使用,下载链接:https://download.csdn.net/download/qq_18995069/11104025。

【Qt+OpenCV项目开发学习】一、环境配置_第19张图片

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