本文主要研究由msvc编译的opencv在QT中的配置,opencv可以是官网直接下载的版本,也可以是msvc(例如vs2019)通过cmake编译 contrib功能的opencv版本,这2种版本对qt版本没有严格要求,但是若在cmake中选择了with_qt功能,那么配置时的qt版本就要和编译时选择的qt版本一样或相近了。
下载官方opencv4.9并解压,将bin路径添加到系统变量
打开Qt5.14.0新建项目
.pro文件设置以下内容
#win32:CONFIG(release, debug|release): LIBS += -LE:/opencv4.9/build/x64/vc16/lib/ -lopencv_world490
#else:win32:CONFIG(debug, debug|release): LIBS += -LE:/opencv4.9/build/x64/vc16/lib/ -lopencv_world490d
CONFIG(debug,debug|release){
LIBS += -LE:/opencv4.9/build/x64/vc16/lib/ -lopencv_world490d
}
else{
LIBS += -LE:/opencv4.9/build/x64/vc16/lib/ -lopencv_world490
}
INCLUDEPATH += E:/opencv4.9/build/include
DEPENDPATH += E:/opencv4.9/build/include
这里注意如果有多个opencv文件,可以后面添加
LIBS += -LE:/opencv4.9/build/x64/vc16/lib/ -lopencv_world490 -lopencv_shape490
添加点击事件
输入按钮点击事件的代码,头文件也要添加
#include
#include
#include
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv; // 引入opencv的命名空间
using namespace std;
void MainWindow::on_pushButton_clicked()
{
QString filename = QFileDialog::getOpenFileName(this, "打开图像文件", "C:/Users", "Image Files (*.bmp;*.png;*.jpg)");
if (filename.isEmpty()) {
QMessageBox::information(this, "提示", "文件打开失败1!");
return;
}
Mat img_input;
img_input = imread(filename.toLocal8Bit().toStdString());
if (img_input.empty()) {
QMessageBox::information(this, "提示", "文件打开失败2!");
return;
}
cv::Mat temp;
cv::cvtColor(img_input, temp, cv::COLOR_BGR2RGB);
namedWindow("Display window",WINDOW_AUTOSIZE);
imshow("Display window",img_input);
waitKey(0);
MainWindow w;
w.show();
}
选择一张图片