VS2022编译器支持配置
QT5默认安装以后支持的是VS2015与VS2017,不支持VS2022,所以必须首先在Qt Creator中配置支持VS2022。配置顺序如下:
首先打开【工具】->【选项】
然点击Kits里面的【编译器】选项。点击Manual下面的【C++】然后点击【添加】
最重要的是填写好正确的VS2022编译器的路径,添加如下:
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvarsx86_amd64.bat
然后把VS2022编译器的路径添加到环境变量里面去:
C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
OpenCV4.10配置与代码测试
重启QT Creator,新建一个QApplication项目,选择MSVC2017 64bit Release。然后在mainwindow.cpp文件中添加下面一段代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <opencv2/opencv.hpp>
#include "QLabel"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->setWindowTitle("OpenCV4.10+QT5+VS2022 - OpenCV学堂");
cv::Mat frame = cv::imread("D:/images/yige.png");
cv::Mat rgb;
cv::cvtColor(frame, rgb, cv::COLOR_BGR2RGB);
QImage img = QImage(rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_RGB888);
img = img.scaled(QSize(800, 500), Qt::KeepAspectRatio);
QPixmap pixmap;
pixmap = pixmap.fromImage(img);
// QPixmap pixmap("D:/images/dannis.jpg");
QLabel *image_label = new QLabel();
image_label->setAlignment(Qt::AlignCenter);
image_label->setStyleSheet("background-color:rgb(0, 0, 0);color:red");
image_label->setPixmap(pixmap);
this->setCentralWidget(image_label);
}
MainWindow::~MainWindow()
{
delete ui;
}
配置好OpenCV库依赖添加到*.pro文件中去
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../opencv-4.10.0/opencv/build/x64/vc16/lib/ -lopencv_world4100
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../opencv-4.10.0/opencv/build/x64/vc16/lib/ -lopencv_world4100d
else:unix: LIBS += -L$$PWD/../../../opencv-4.10.0/opencv/build/x64/vc16/lib/ -lopencv_world4100
INCLUDEPATH += $$PWD/../../../opencv-4.10.0/opencv/build/include
DEPENDPATH += $$PWD/../../../opencv-4.10.0/opencv/build/include
请注意遇到问题:
官方系统化学习QT + OpenCV + 深度学习 一键资料下载
QT Creator编译 遇到的问题 - 无法找到C++标准头文件
无法打开包括文件: “type_traits”: No such file or directory
解决方法:
打开当前项目,点击【build】->【build Environment】的详情,分别添加Include与Lib选项内容。图示如下: