【Oencv2计算机视觉学习笔记(二)】使用Qt创建GUI应用
2014-08-28 10:16
1006 查看
书中大量例程均使用Qt GUI应用,后文提到的Model-View-Controller模式也是非常值得借鉴的,所以我们就从Qt GUI开始吧
启动Qt Creator 新建一个 Qt Widget Application:
![](http://img.blog.csdn.net/20140828102158782?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFycnkxOTkwMjAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
直接点击完成即可,并记得给工程.pro文件添加OpenCV的路径
之后可以看到有一个界面文件mainwindow.ui 它定义了UI的布局,利用此,我们可以通过拖拽不同的控件直观的设计我们想要的界面,如图。
![](http://img.blog.csdn.net/20140828102915671?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFycnkxOTkwMjAwMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
右击设计好的按钮,在菜单中选择“转到槽”书中英文写的是“Go to slot"(这蛋疼的翻译啊),选择clicked()选项,之后会跳转到mainwindow.cpp文件中,并添加了Slot函数,当接收到该按键时,Click()将调用它。
第一个按钮为打开图像,我们把相应的操作写在对应的函数槽中(为了编程方便,写入了using namespace cv):
注意哈!Qt5以后已经把toAscii()函数去掉了(书中使用该函数),需要用toLatin1()代替掉。
同样的,我们为第二个按钮增加clicked()槽,并对函数槽进行编辑:
其中file()函数是将图像进行翻转。
运行就OK了!
启动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了!
相关文章推荐
- 【Oencv2计算机视觉学习笔记(一)】QT5.3.1 与 OpenCV2.4.9 环境搭建
- Qt学习之四:使用Qt+OpenCV创建GUI应用
- Symbian学习笔记(4)——在GUI应用中使用图像
- (学习笔记3)TexturePackerGUI的使用和角色动画的创建
- Symbian学习笔记(4):在GUI应用中使用图像
- [Erlang 学习笔记] 使用 rebar 创建 application(basho- lager 应用实例)
- Qt之GUI学习笔记(四)——创建对话框
- QT之GUI学习笔记(三)——API文档的使用
- Symbian学习笔记(4):在GUI应用中使用图像
- Symbian学习笔记(4):在GUI应用中使用图像
- [计算机视觉:算法与应用]学习笔记一:图像形成
- 使用Qt创建第一个OpenCV的Gui应用
- Flex企业应用开发实践学习笔记(六)——使用ActionScript创建自定义组件
- Symbian学习笔记(4)——在GUI应用中使用图像
- 学习笔记之使用域名创建虚拟主机
- Qt 学习笔记之二 ―― 使用一套 Qt Creator 同时支持 Qt SDK 和 Nokia Qt SDK
- php学习笔记(7):PHP数组的创建修改使用
- 微软企业库4.1学习笔记(三十二)数据访问模块 在应用中使用数据访问模块
- Qt Model/View 学习笔记 (四) 创建新的Models
- Qt Model/View 学习笔记 (二):为使用Models与views热身