zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Qt调用OpenCV

OpencvQt 调用
2023-09-14 09:05:10 时间

在Qt Creator上新建一个项目。

右键新项目>>添加库…>>外部库>>选中库文件路径>>下一步,完成,添加到.pro文件中。

 

然后再在pro文件中手动输入下面代码:

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

INCLUDEPATH += D:\opencv\build\include\
               D:\opencv\build\include\opencv\
               D:\opencv\build\include\opencv2\

当然每个人OpenCV的安装路径是不一样的,你要找到你的安装路径下。

然后举个例子吧。

.pro文件:

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
INCLUDEPATH += D:\opencv\build\include\
               D:\opencv\build\include\opencv\
               D:\opencv\build\include\opencv2\
win32:CONFIG(release, debug|release): LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342d
else:unix: LIBS += -LD:/opencv/build/x64/vc14/lib/ -lopencv_world342
INCLUDEPATH += D:/opencv/build/x64/vc14
DEPENDPATH += D:/opencv/build/x64/vc14
SOURCES += \
    main.cpp \
    mainwindow.cpp
HEADERS += \
    mainwindow.h
FORMS += \
    mainwindow.ui

main.cpp

#include "mainwindow.h"
#include <QApplication>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();


    return a.exec();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H


#include <QMainWindow>
#include <QFileDialog>//文件对话框
#include <opencv2/core/core.hpp>//opencv相关的库文件
#include <opencv2/highgui/highgui.hpp>
using namespace cv;


namespace Ui {
class MainWindow;
}


class MainWindow : public QMainWindow
{
    Q_OBJECT


public:
    explicit MainWindow(QWidget *parent = 0);//explicit是显式的意思,构造函数,继承父类
    ~MainWindow();//析构函数


private slots://私有槽函数
    void on_pushButton_clicked();//声明按键


    void on_pushButton_2_clicked();


private:
    Ui::MainWindow *ui;
    Mat image;
};


#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"//头文件
#include "ui_mainwindow.h"//ui界面头文件


MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->pushButton_2->setEnabled(false);//初始按键2不能使用
}


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


void MainWindow::on_pushButton_clicked()//按键定义
{
    //调用窗口打开文件
    QString filename = QFileDialog::getOpenFileName(this,
                                                    tr("open image"),
                                                    ".",
                                                    tr("Image file(*.png *.jpg *.bmp)"));
    image = imread(filename.toLocal8Bit().data());
    if(image.data) {
        ui->pushButton_2->setEnabled(true);//按键2恢复
    }
    //将Mat图像转换为QImage图像,才能显示在label上
    QImage img = QImage((const unsigned char*)(image.data),
                        image.cols, image.rows, QImage::Format_RGB888);//格式转换
    //设定图像大小自适应label窗口的大小
    img = img.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
    ui->label->setPixmap(QPixmap::fromImage(img));
}


void MainWindow::on_pushButton_2_clicked()
{
    flip(image, image, 1);
    QImage img = QImage((const unsigned char*)(image.data),
                        image.cols, image.rows, QImage::Format_RGB888);
    img = img.scaled(ui->label->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);


    ui->label->clear();//清除窗口
    ui->label->setPixmap(QPixmap::fromImage(img));//显示其它图像
}

mainwindow.ui

 然后就可以运行,测试一下代码了。。

 本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓