购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 Windows下搭建OpenCV开发环境

2.1.1 下载和安装Qt

对于图像视觉编程来说,如果所有事情都要从头开始写,那结果将是灾难性的。幸运的是国际开源界已经为我们提供了一个强大的视觉函数库——OpenCV。

本书使用Qt 5.14.2,这是最后一个由官方提供安装包文件的版本了,从Qt 5.15开始要自己进行源码编译才能使用。下载Qt 5.14的官方网址如下:

     https:// download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-windows-
x86-5.14.2.exe

如果直接把这个网址输入浏览器中,会得到这样的提示:

    Download from your IP address is not allowed

因为Qt官方禁止我们下载了,可以把这个网址放到迅雷中下载。如果这个下载地址失效了,也可以向笔者求助。

下载下来的文件名是qt-opensource-windows-x86-5.14.2,直接双击就可以开始安装,但安装过程需要连接互联网,因为要在线验证账号。具体安装步骤如下:

步骤01 直接双击qt-opensource- windows-x86-5.14.2.exe文件,显示欢迎安装界面,如图2-1所示。

步骤02 单击Next按钮,出现Qt Account对话框,此时提示输入Qt账号(可以到官网上去注册)。输入账号后,一直单击Next按钮,直到出现“安装文件夹”对话框,在该对话框中设置Qt安装路径,这里安装在C:\Qt\Qt5.14.2,如图2-2所示。需要注意的是,安装路径中不要有空格或中文。

图2-1

图2-2

在安装Qt 5.14时会自动安装Qt Creator(开发Qt程序的IDE),如果要将Qt开发对应的常见文件类型关联到Qt Creator(即用Qt Creator打开文件),那么在图2-2所示的窗口中就要勾选左下角的复选框。

步骤03 继续单击“下一步”按钮,此时出现“选择组件”对话框,主要是选择开发时所需要的编译器,包含调试器的集成开发环境,如图2-3所示。我们需要勾选Qt 5.14.2下的Sources和MinGW7.3.0 64-bit,以及Developer and Designer Tools下的Qt Creator4.11.1 CDB Debug....。

(1)Sources表示Qt的源码,因为我们要编译源码,所以要勾选该选项。

(2)MinGW即Minimalist GNU For Windows,是一些头文件和库的集合,该集合允许人们在没有第三方动态链接库的情况下使用gcc编译器产生Win32程序。通俗地讲,它就是开源的C语言编译器gcc的Windows版本,可以将我们的应用程序源码编译为可在Windows中运行的可执行程序,即在Windows平台上使用的gcc编译器。7.3.0是MinGW的版本号,64-bit表示这个MinGW可以编译生成64位或32位可执行程序。而32-bit只能编译生成32位可执行程序。

必须勾选Qt 5.14.2下的MinGW 7.3.0 64-bit,虽然Developer and DesignerTools下也有MinGW 7.3.0 64-bit,但两者含义是不同的。勾选Qt 5.14.2下的MinGW 7.3.0 64-bit后,会在安装目录(这里是C:\Qt\Qt 5.14.2)下生成子文件夹“5.14.2\mingw73_64”和“Tools\mingw730_64”,前者存放开发Qt所需的且是MinGW编译的库和头文件,以及一些和Qt相关的工具程序;后者存放gnu/gcc工具链和有限的一些库和头文件,且这些库和头文件不是Qt库和Qt头文件,和Qt无关。因此,“5.14.2\mingw73_64”文件夹中的mingw73_64的含义是该文件夹下的Qt相关的库文件和工具程序都是MinGW编译生成的;而“Tools\mingw730_64”文件夹中的mingw730_64的含义是这个文件夹包含的是MinGW本身这个GNU工具链。

如果我们只勾选Developer and Designer Tools下的MinGW 7.3.0 64-bit,那么只会在安装目录下生成子文件夹“Tools\mingw730_64”,里面仅包含gnu/gcc等工具链和有限的一些库和头文件。显然,仅凭这些东西无法直接开发Qt应用程序,因为没有Qt库和头文件给我们使用。

因此,要开发Qt应用程序,就必须勾选Qt 5.14.2下的MinGW 7.3.0 64-bit,否则无法使用Qt中的函数和头文件。通常也把子文件夹所包含的内容叫作构建套件(kit),也就是一个开发包。

另外,如果读者不喜欢用MinGW,那可以勾选MSVC,这也是微软出品的编译器,一般配合VC++这个IDE时才用这款编译器。这里我们用Qt Creator这个IDE。

步骤04 Qt Creator4.11.1 CDB Debug是带有CDB调试器的Qt集成开发环境。

步骤05 接着一直单击“下一步”按钮,然后就开始正式安装,稍等片刻即可安装完成,如图2-4所示。如果在图2-4中勾选Launch Qt Creator复选框,那么该对话框关闭后会启动Qt Creator。保持默认选中状态,然后单击“完成”按钮,此时将启动Qt Creator,如图2-5所示。

图2-3

图2-4

图2-5

至此,Qt 5.14安装成功。以前用过Qt的读者应该知道,Qt Creator是老牌的Qt开发环境了,功能也日趋强大。下面我们用Qt Creator新建一个Qt图形界面程序,以此来测试Qt是否工作正常。

【例2.1】第一个Qt程序

1)启动Qt Creator

步骤01 依次单击主菜单栏中的“文件→新建文件或项目”或直接按Ctrl+N快捷键,打开“新建项目”对话框,然后在左侧选择Application,在右侧选择Qt Widgets Application,如图2-6所示。Widgets是小部件的意思,或者说是控件,因此Qt Widgets Application称为Qt控件程序。它提供了一组UI元素,用于创建经典的桌面风格的用户界面。

图2-6

步骤02 单击Choose…按钮,在新出现的Location对话框上设置项目名称和路径,如图2-7所示。

图2-7

这个路径和目录必须预先创建好,否则不能进行下一步操作,这也是Qt Creator不够智能的地方,不会自动帮我们创建目录。

步骤03 单击“下一步”按钮,在新出现的Build System对话框中显示构建工具(qmake),且已经自动探测到了,我们不需要去选择,保持默认即可。

步骤04 继续单击“下一步”按钮,在新出现的Details对话框中显示类信息(比如类名、基类等),如图2-8所示。

图2-8

Qt程序一般由头文件、cpp源文件和.ui界面文件组成,前两者就是存放代码的文件,.ui界面文件则是用于可视化界面设计的,比如拖放控件等。

步骤05 继续单击“下一步”按钮,出现Translation对话框,在该对话框上可以选择应用程序的语言,比如英文,这里保持默认。

步骤06 再单击“下一步”按钮,出现Kits对话框,该对话框显示了当前可用的开发包,因为我们安装Qt的时候选择了基于MinGW的64位开发包,所以现在自动探测出来了,如图2-9所示。

图2-9

步骤07 再单击“下一步”按钮,出现Summary对话框,如图2-10所示。

图2-10

注意该对话框下方显示的要向d:\ex\test这个目录添加的文件。其中:

● main.cpp是包含main函数的C++源文件。

● mainwindow.cpp是绘制主窗口的C++源文件。

● mainwindow.h是对应的头文件。

● mainwindow.ui是主窗口的描述文件。Qt中的UI文件是一种特殊的XML格式文件,包含了界面上各种控件的信息,如按钮、文本框、下拉菜单等,以及它们的布局和属性设置,用于描述应用程序的用户界面。这些文件可以使用Qt的可视化设计工具Qt Designer来创建和编辑。Qt Designer提供了直观的界面,允许用户通过拖放和配置界面元素的方式来设计应用程序的图形用户界面(GUI)。UI文件可以在Qt应用程序中通过Qt User Interface Compiler(uic)工具转换为C++代码,供应用程序使用。

● test.pro是项目(描述)文件。在Qt中,.pro文件(也称为项目文件)是Qt项目管理系统(qmake)所使用的配置文件。这个文件定义了如何构建Qt应用程序或库,它使用简单的键值对语法,允许我们指定源文件、头文件、库依赖、配置选项等。qmake是Qt工具包中自带的一个非常方便的工具,用于读取.pro文件,并生成一个标准的Makefile(在Unix-like系统上),还可以生成Microsoft Visual Studio可以使用的项目文件等,以便可以使用相应的构建工具(如make或IDE)来构建项目。最关键的是它可以自动解决依赖关系,不用手写Makefile,而且是跨平台的。

步骤08 最后单击“完成”按钮,完成Qt的安装,编辑代码窗口会自动打开main.cpp文件,并显示了main.cpp中自动生成了代码。我们来看一下main函数:

     01#include "mainwindow.h"
    02#include <QApplication>
    03
    04int main(int argc, char *argv[])
    05{
    06    QApplication a(argc, argv);
    07    MainWindow w;
    08    w.show();
    09    return a.exec();
    10}

代码解释如下:

● 第02行代码引入所有Qt程序都要包含的头文件QApplication。

● 第06行代码创建一个QApplication对象,用于管理应用程序的资源,这对于运行任何使用Qt Widgets(控件)的Qt程序都是必需的;对于不使用Qt控件的GUI应用程序,可以改用QGuiApplication。

● 第07行代码创建主窗口对象。类MainWindow是安装向导为我们生成的,该类封装一个主窗口,在主窗口上可以添加各类控件。常见的控件包括文本编辑、滚动条、标签和按钮等。

● 第08行代码调用show这个成员函数在屏幕上显示主窗口。

● 第09行代码使QApplication对象进入其事件循环。当Qt应用程序运行时,会生成事件并将事件发送到应用程序的控件。常见的事件有鼠标按下和键盘按键。

其他源文件中的内容就不叙述了,毕竟我们的主要目标不是Qt本身。

2)运行项目

步骤01 按快捷键Ctrl+R或依次单击主菜单栏中的“构建→运行”选项,也可以单击Qt Creator左下角的三角形按钮,该按钮是运行的快捷键,功能和Ctrl+R一样,如图2-11所示。

步骤02 如果修改过代码,那么第一次运行时,会弹出对话框提示保存修改,如图2-12所示。

图2-11

图2-12

勾选“构建之前总是先保存文件”复选框,这样以后如果修改了代码,运行前就可以自动保存文件,而不需要我们手动去保存了。

步骤03 最后单击Save All按钮。

运行结果如图2-13所示。

图2-13

此时,在d:\ex下新生成了两个文件夹,test和build-test-Desktop_Qt_5_14_2_MinGW_64_bit-Debug。

test文件夹下存放的是工程源码,比如main.cpp、mainwindow.cpp,还存放有工程文件test.pro。双击test.pro就可以直接通过Qt Creator来打开整个工程;也可以先打开Qt Creator,然后在Qt Creator中打开test.pro。

build-test-Desktop_Qt_5_14_2_MinGW_64_bit-Debug文件夹中存放的是编译生成的可执行文件和其他临时文件,这个文件夹在Qt Creator重新编译运行工程的时候会被清空。我们可以在build-test-Desktop_Qt_5_14_2_MinGW_64_bit-Debug\debug\下找到test.exe这个可执行文件。

上面的例子比较简单,我们没有写代码,也没有拖放控件到窗口上。该实例的主要目的是测试刚安装好的Qt的开发功能是否工作正常。

2.1.2 下载和解压OpenCV

Qt Creator这个IDE准备好了后,就可以准备OpenCV了。OpenCV可以到其官网(https://opencv.org/releases/)下载,打开首页后就可以找到OpenCV - 4.10.0,如图2-14所示。

图2-14

其中:

● Docs:一些英文文档,比较晦涩难懂。

● Sources:是当前版本的OpenCV源码。

● Windows:Windows环境下编译好的文件(build)+源码。

● iOS pack:iOS环境下编译好的文件(build)+源码。

● Android:Android环境下编译好的文件(build)+源码。

在OpenCV- 4.10.0下,单击Sources,等3秒后开始下载。下载下来的文件是4.10.0.zip,这是个压缩包文件。如果读者不想下载,可以到随书源码的somesofts文件夹中找到4.10.0.zip文件。

笔者的计算机上已经安装了WinRAR软件,准备用它来解压opencv-4.10.0.zip文件。把4.10.0.zip复制到D:\,然后对其右击,在弹出的快捷菜单中选择“解压到当前文件夹”,解压后的目录为D:\opencv-4.10.0。进入这个文件夹,就可以看到各个不同的文件夹和文件了。

我们需要通过源码编译出MinGW能识别的OpenCV库,从而让程序可以调用这些库,因为程序也将由MinGW来编译。

2.1.3 了解构建工具

相信读者都学过C/C++语言了,对编译链接过程已经很熟悉了,也就是“编译预处理→编译→链接”。然而,编译OpenCV可不是这么简单,因为它是源码文件很多,依赖关系复杂。因此我们需要一个能有效管理编译过程的工具。这个工具就叫作构建工具,比较著名的构建工具是make程序。

与构建相关联的是编译,编译是将一个源文件转换成一个二进制文件,而构建就是对于编译的安排。在一个大的工程(比如OpenCV源码)中,通常包含很多源文件,其中可能还包含复杂的依赖关系,构建就是对于多个源文件进行编译的合理安排。

为什么需要构建工具呢?大多数工程师在学习编程时都使用非常简单的例子,而这个例子可能就只有一个源文件,因此大多数工程师开始都是直接调用gcc或javac等工具,或者使用IDE中提供的便捷的编译工具,例如以下例子就是将同一目录的源码转换为二进制文件:

    gcc *.c -o test

gcc非常智能,可以在当前目录的子目录中查找要导入的代码,但是它找不到文件系统的其他部分中存储的代码(或由多个项目共享的库)。它还只知道如何构建C代码。大型系统通常使用各种编程语言编写不同部分,并且这些部分之间具有网络,这意味着单一编译器无法构建整个系统。当工程日趋复杂,一个简单的编译命令无法满足要求而需要多个编译命令的组合时,可能会想到使用Shell脚本来组织编译命令,这些脚本会按正确的顺序构建应用。然而,随着工程的进一步膨胀,Shell脚本也显得力不从心,会遇到很多问题:

(1)构建变得很烦琐。随着系统变得越来越复杂,在构建脚本上花费的时间几乎与编写代码一样。调试Shell脚本非常痛苦,并且越来越多的技巧层层叠加。

(2)速度很慢。为了确保应用不会意外依赖过时的库,需要让构建脚本在每次运行时按顺序构建每个依赖项。因此需要考虑添加一些逻辑来检测哪些部分需要重新构建。这听起来非常复杂,并且对于脚本来说也很容易出错,脚本会变得越来越复杂,导致难以管理。

笔者的理解是从最初的gcc、shell脚本到现在完善的构建工具,都是对于编译过程的进一步抽象,以使编译与构建更加易于理解和维护。底层做的事情都是一样的,是为了让人更好理解和维护。

Make是一个命令行工具和构建自动化工具,用于管理和构建软件项目。它通过一个Makefile脚本文件来定义构建任务和依赖关系,然后根据这些规则自动执行任务,以生成最终的目标文件。Make可以自动化构建、任务并行执行、控制环境变量,并可以在多种操作系统上运行。它具有依赖管理功能,确保任务的正确构建顺序。

Make的作用就是一个自动化的构建工具,它告知编译器正确的处理顺序,保证每个依赖都能得到处理,最后生成相应的工程。而Makefile的作用相当于一张图纸,它用来告诉Make具体怎样处理编译过程。

如果只是一个小型的工程,比如就几个源码文件,那么不使用Make只依靠编译器并添加几个指令也完全可以处理。但是,如果是一个较大的项目,里面有复杂的依赖关系,此时只依靠靠编译器并添加几个处理指令的方式已经不太现实了,使用Make和Makefile来进行自动化构建才是正确的选择。

那么MinGW提供构建工具了吗?答案当然是肯定的,在路径C:\Qt\Qt5.14.2\Tools\mingw730_64\bin\下可以看到mingw32-make.exe程序,它就是MinGW提供的构建工具。

2.1.4 下载和安装CMake

2.1.3节提到了Make是用来处理编译顺序和依赖关系并构建最终项目的工具,但是问题来了,不同的平台会有不同的构建方式,例如,Linux生成最终的二进制程序和.so动态链接,而Windows生成.exe程序和dll动态链接;同时两者的依赖也可能不同。如果在不同的平台上写不同的Makefile,会相当麻烦;而且Makefile文件本身的写法也很复杂,在大型工程中较难阅读和理解。此时CMake就派上用场了。

CMake是“cross platform make”的缩写。虽然名字中含有“make”,但是CMake和UNIX上常见的make系统是分开的,而且更为高阶。CMake本身不执行Make过程,而是根据不同平台的特性生成对应的Makefile,这样每个工程只要写一个CMake文件即可,其余的交给不同平台的处理器来产生不同的Makefile文件;而且CMake的语法也更加简洁,适合阅读。

Make和CMake的关系如图2-15所示。

图2-15

总之,Cmake是生成Makefile文件的工具,Make则是根据Makefile执行构建的工具。在使用CMake生成构建文件后,可以使用相应的构建工具(如Make、Visual Studio等)执行实际的编译过程,将源码编译为可执行文件或库。

在Window上使用CMake比较方便,因为有图形界面版本的CMake,一般称为CMake GUI。我们可以到CMake官网(https://cmake.org/download/)下载CMake GUI。下载下来的是一个安装包文件cmake-3.30.2-windows-x86_64.msi。如果读者不想下载,也可以在随时源码的somesofts文件夹下找到该安装包。安装过程很简单,直接双击安装包即可开始安装。需要注意的是,要在Install Options对话框上勾选Add CMake shortcut to the Desktop复选框,如图2-16所示。这样,安装后可以在桌面上生成一个快捷方式。

图2-16

安装完成后,要配置环境变量,将QT的mingw32编译器的路径添加到Path环境变量中(注意:QT有两个路径),如下所示:

     C:\Qt\Qt5.14.2\5.14.2\mingw73_64\bin
    C:\Qt\Qt5.14.2\Tools\mingw730_64\bin

添加完毕后,重启计算机使之生效。

2.1.5 生成Makefile文件

在用CMake生成Makefile文件之前,我们要做一项重要的工作。CMake在配置阶段会到国外一些网站下载一些文件放到一个名为“.cache”的文件夹中,这个文件夹是CMake在OpenCV源码根目录下自动新建的。但由于国内下载文件比较慢,所以经常会出现CMake卡死的情况。解决的方法是通过下载日志文件CMakeDownloadLog.txt把下载失败的文件下载地址记录下来,然后复制到迅雷中下载;下载完毕后,将文件名改为“md5-filename”的形式,然后放到“.cache”文件夹中的相应位置。再次启动CMake配置时,CMake看到相应位置已经有文件了,就不会再去下载了,从而让CMake能继续工作下去。

我们可以在somesofts文件夹中找到.cache文件夹,然后把它复制到D:\opencv-4.10.0下。

现在可以使用CMake生成Makefile文件了。

步骤01 在桌面上双击CMake (cmake-gui),打开cmake-gui界面,单击Where is the source code右端的Browse Source...按钮,选择opencv源码的文件夹,这里是D:\opencv-4.10.0。再单击Where to build the binaries右端的Browse Build...按钮,选择一个新建的文件夹,用于保存编译后的文件和编译过程中产生的中间文件。笔者在D盘下新建了一个文件夹opencvBuild。最终选择后的界面如图2-17所示。

图2-17

步骤02 单击左下方的Configure按钮,在出现的CMakeSetup对话框上做如图2-18所示的选择。

图2-18

步骤03 单击Next按钮,在新的对话框中选择gcc和g++的路径,分别是:

     C:/Qt/Qt5.14.2/Tools/mingw730_64/bin/gcc.exe
    C:/Qt/Qt5.14.2/Tools/mingw730_64/bin/g++.exe

如图2-19所示。

图2-19

步骤04 最后单击Finish按钮,就可以CMake在工作了,如图2-20所示。

图2-20

经过100多秒后,配置结束,如图2-21所示。

图2-21

步骤05 下面修改一些配置,以便将来编译时对不需要的组件就不用去编译了。具体修改如表2-1所示。

表2-1 修改配置

步骤06 再次单击Configure按钮进行配置,配置完毕后,单击Generate按钮,当出现Generating done时说明Makefile生成成功了,该文件可以在D:\opencvBuild下找到。关闭CMake。

2.1.6 开始编译OpenCV

下面准备编译OpenCV。

步骤01 打开命令行窗口,进入D:\opencvBuild,开始执行编译命令:

    mingw32-make -j 8

-j这个选项用来指定线程数,这里指定8个线程进行编译,这样可以快一点。这个命令耗时有点长,稍等片刻,编译完成,如图2-22所示。

图2-22

步骤02 编译完成之后,输入如下命令进行安装:

    mingw32-make install

稍等片刻,安装完成,我们可以在D:\opencvBuild\install\x64\mingw下看到bin和lib两个文件夹,这两个文件夹下的内容是我们稍后编程需要用到的。其中bin下的主要是.dll文件,这些文件是程序运行时所要链接的动态链接库;lib下的主要是.a静态库文件,这些文件是程序编译时需要用到的文件。

2.1.7 Qt开发的第一个OpenCV程序

准备工作终于完成了,现在可以开始用Qt编写OpenCV程序了。

【例2.2】Qt开发的第一个OpenCV程序

1)运行Qt项目

步骤01 在桌面上找到Qt Creator 4.11.1 (Community),双击打开Qt Creator,新建一个控制台项目,项目名是hello。在Qt Creator主界面的Projects旁单击New按钮,如图2-23所示。

步骤02 在出现的“新建项目”对话框中选中Qt Console Application,如图2-24所示。

图2-23

图2-24

步骤03 单击Choose按钮,在新的对话框中输入项目名称和路径,建议用全英文路径,如图2-25所示。

图2-25

步骤04 随后连续单击“下一步”按钮,直到向导结束出现编辑窗口,此时可以看到自动生成了一个main函数。我们来简单修改一下程序,使之既能输出图形对话框,又能在命令窗口中输出字符串,如下代码:

QApplication是Qt应用程序中必不可少的一部分,它负责管理应用程序的生命周期,处理事件循环,设置应用的整体样式等。QString是Qt框架中处理文本数据的核心类之一。它提供了强大的字符串处理能力,支持多种文本编码和操作。在这个示例中,我们定义了字符串“text”,并通过QMessageBox::information将其在消息对话框上输出;然后,用C函数puts在控制台上输出字符串“helloworld”。

步骤05 由于这个项目原本是控制台项目,因此如果要输出图形消息框,还需要在项目配置文件中进行一些修改。打开hello.pro,在文件开头添加如下代码:

    QT+=widgets

widgets是在Qt中创建用户界面的主要元素,它可以显示数据和状态信息,接收用户输入,并为应该组合在一起的其他小部件提供容器。QT+的意思是加上widgets模块。如果此时运行程序,则可以出现消息对话框并可以在控制台上输出字符串“helloworld”。

2)添加OpenCV代码

Qt项目能运行了,但还不是一个OpenCV程序,下面加上OpenCV代码。

步骤01 在工程配置文件中添加OpenCV库和头文件的路径,在hello.pro的末尾添加如下代码:

     INCLUDEPATH += D:/opencvBuild/install/include/
    LIBS += -L D:/opencvBuild/install/x64/mingw/lib/libopencv_*.a

宏INCLUDEPATH用来指定头文件所在路径,LIBS用来指定库文件所在路径,这两个宏都要用一个+,并且LIBS+=右边要用-L来指定路径,这个写法和gcc指定库路径写法类似。

步骤02 下面添加源码,在Qt Creator中打开main.cpp,输入如下代码:

在上述代码中,自定义函数f的功能是将图片p1.jpg和sbh.jpg进行混合,它们的大小必须一样。这两幅图片必须复制到D:\ex\build-hello-Desktop_Qt_5_14_2_MinGW_64_bit-Debug目录下。其中,OpenCV库中的API函数imread用来从文件中读取图片;API函数addWeighted用于将两幅相同大小、相同类型的图片进行融合,第二个参数alpha表示第一幅图片所占的权重,第四个参数beta表示第二幅图片所占的权重。权重越大的图片显示得越多,比如我们输入alpha为0.9,则主要显示第一幅图片。main中的代码比较简单,主要是从D盘读取一个图片文件test.jpg,然后调用f。

3)复制动态链接库到exe文件所在文件夹

步骤01 首先打开以下路径来查看exe文件:

    D:\ex\build-hello-Desktop_Qt_5_14_2_MinGW_64_bit-Debug\debug

这个路径是程序生成的hello.exe文件所在的路径。hello.exe是一个Windows下的可执行文件,MinGW能在编译阶段加载Linux下的静态库(.a)文件,最终生成Windows下的.exe文件。但hello.exe还需要加载OpenCV源码编译出来的动态链接库后才能运行。

步骤02 打开目录D:\opencvBuild\install\x64\mingw\bin\,把该目录下的libopencv_core4100.dll、libopencv_highgui4100.dll、libopencv_imgcodecs4100.dll和libopencv_imgproc4100.dll四个文件复制到hello.exe文件所在文件夹。

4)运行程序

在Qt Creator中单击左下角的三角运行按钮或直接按快捷键Ctrl+R来运行项目。运行结果如图2-26所示。

图2-26

在键盘上随便按一个键,控制台窗口上则会显示helloworld信息框。关闭信息框,会让我们在控制台窗口上输入权值,这里我们输入0.9,可以看到sbh.jpg显示的效果就淡了很多,如图2-27所示。

图2-27

如图图片不能加载,请确认p1.jgp和sbh.jpg是否复制到以下路径:

    D:\ex\build-hello-Desktop_Qt_5_14_2_MinGW_64_bit-Debug

以及test.jpg是否复制到D盘。在这个程序中,我们既加载了绝对路径下的图片文件(test.jpg),也加载了当前路径下的图片文件(p1.jpg和sbh.jpg)。这3个文件可以在工程目录的res文件夹下找到。

至此,基于Qt Creator的OpenCV的开发环境搭建起来了。 kkCNK8o9z68YWWu0BGqj3eV1BGFTODIbX5dXb+qpNqM1xYRfUVxo/HJgdkKpLI6T

点击中间区域
呼出菜单
上一章
目录
下一章
×