余睿的博客

浮生若梦,别多会少,不如莫遇

0%

Qt6引入第三方opencv库

创建项目

首先创建一个新的Qt6项目,选择Qt Widgets Application,然后一路默认,创建一个最基本的Qt5项目。

创建qt项目

创建项目后我们的文件结构如下所示:

1
2
3
4
5
6
project
|__include
|__lib
|__bin
|__src
|__项目源代码

其中:

  • include:头文件存放位置

  • lib:静态链接库

  • bin:动态链接库

  • src:项目源码

添加库文件

这里以添加opencv库为案例,在opencv官网下载并编译opencv,将编译后libbin目录下的文件以及include下的opencv2文件夹复制到项目目录下的对应文件夹内。项目目录变为如下图所示:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
project
|__include
| |__opencv2
|__lib
| |__opencv_world450.lib
| |__opencv_world450d.lib
|__bin
| |__opencv_videoio_ffmpeg450_64.dll
| |__opencv_videoio_msmf450_64.dll
| |__opencv_videoio_msmf450_64d.dll
| |__opencv_world450.dll
| |opencv_world450.pdb
| |opencv_world450d.dll
| |opencv_world450d.pdb
|__src
|__项目源代码

需要注意的是,在选择链接库的时候,需选择对应编译器版本的链接库,这里选择的为vc15的版本。

在这里,我们将第三方库文件复制到了项目文件中,这样做的目的是方便管理,我们也可以不复制库文件到项目路径,只需要记住库的安装位置,然后添加时选择对应的路径即可。

添加库文件到项目

  1. 选中项目名称,然后右键选中添加库

    添加库

  2. 在弹出的对话框中选择外部库

    添加外部库

  3. 然后选择库文件目录,Qt会自动帮我们将包含路径推测出来,如果没有推测出来,我们选择刚才的include路径即可。

    选择路径

    在g添加完成后,Qt会在qmake中增加下面内容:

    1
    2
    3
    4
    5
    win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../lib/ -lopencv_world450
    else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../lib/ -lopencv_world450d

    INCLUDEPATH += $$PWD/../../include
    DEPENDPATH += $$PWD/../../include

测试

main.cpp中增加下面内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "mainwindow.h"

#include <QApplication>
#include <opencv2/opencv.hpp>
# ^^^^^^^^^^^^^^^^^^

int main(int argc, char *argv[])
{
cv::namedWindow("test window");
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}

#include <opencv2/opencv.hpp>:opencv库头文件

cv::namedWindow("test window");:创建一个名字为test window的窗口。

运行后得到如下的结果即添加成功:

添加成功

一些问题

如果编译后不能正常执行,提示缺少动态链接库。

将 项目->对应编译环境—>run—>working directory设置为bin目录下即可

设置运行环境

欢迎关注我的其它发布渠道