【Oencv2计算机视觉学习笔记(二)】使用Qt创建GUI应用

本文介绍如何在Qt Creator环境中结合OpenCV实现基本图像处理功能,包括读取图像、显示图像及图像翻转等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

书中大量例程均使用Qt GUI应用,后文提到的Model-View-Controller模式也是非常值得借鉴的,所以我们就从Qt GUI开始吧

启动Qt Creator 新建一个 Qt Widget Application:

直接点击完成即可,并记得给工程.pro文件添加OpenCV的路径

之后可以看到有一个界面文件mainwindow.ui 它定义了UI的布局,利用此,我们可以通过拖拽不同的控件直观的设计我们想要的界面,如图。

右击设计好的按钮,在菜单中选择“转到槽”书中英文写的是“Go to slot"(这蛋疼的翻译啊),选择clicked()选项,之后会跳转到mainwindow.cpp文件中,并添加了Slot函数,当接收到该按键时,Click()将调用它。

void MainWindow::on_ButtonOpenImage_clicked()
{

}
为了可以实现功能,我们对MainWindow类进行进一步的修改,打开mainWindow.h,添加OpenCV中core.hpp,以及highgui.hpp头文件,并定义了一个cv::Mat 的成员变量:

#define MAINWINDOW_H

#include <QMainWindow>

<strong>#include <QFileDialog>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp></strong>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_ButtonOpenImage_clicked();

private:
    Ui::MainWindow *ui;
<strong>    cv::Mat image;  //图像变量</strong>
};

#endif // MAINWINDOW_H

第一个按钮为打开图像,我们把相应的操作写在对应的函数槽中(为了编程方便,写入了using namespace cv):

void MainWindow::on_ButtonOpenImage_clicked()
{
    QString filename = QFileDialog::getOpenFileName(this,tr("Open Image"),".",tr("Image Files(*.png *.jpg *.jpeg *.bmp)"));
    image = imread(filename.toLatin1().data());
    namedWindow("Original Image");
    imshow("Original Image",image);
}

注意哈!Qt5以后已经把toAscii()函数去掉了(书中使用该函数),需要用toLatin1()代替掉。

同样的,我们为第二个按钮增加clicked()槽,并对函数槽进行编辑:

void MainWindow::on_ButtonProcess_clicked()
{
    flip(image,image,1);
    namedWindow("Output Image");
    imshow("Output Image",image);
}

其中file()函数是将图像进行翻转。

运行就OK了!





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值