OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
2012-08-25 19:20
921 查看
一直对MFC对OpenCV的支持不好而耿耿于怀,了解了Qt对OpenCV支持很好,但网上这方面的资料很少。大部分的图形交互的设计都是基于OpenCV2.0之前的数据结构lpImage进行的。最近得到了一本好书《OpenCV 2 Computer Vision Application Programming Cookbook》,下载的链接为http://ishare.iask.sina.com.cn/f/20485520.html?retcode=0,2011年5月出版,全书都是基于OpenCV2.2版本的实现,采用了新的数据结构。我这里强烈建议利用C++开发的朋友们不要再使用老版本的数据结构了,实在影响开发效率。至于大家最熟悉的参考书《learning OpenCV》和《OpenCV教程——基础篇》这两本广为流传的书,我的看法是已经远远不能满足OpenCV新版本的学习了。真的希望这本新书的中文版尽快出炉。
参考这本书的利用Qt创建GUI,不过书中的办法是在Qt Creator下实现的,我这里通过VS2008+Qt实现。下面结合一个例程介绍一下如何在Qt的GUI环境下开发OpenCV。
先新建工程Qt Project --> Qt Application,点击finish完成工程的创建。然后在项目属性里的连接器的附加依赖项里面添加opencv的lib文件。工程创建好之后,一个后缀名为.ui的文件就是关于界面设计的。首先创建两个按钮,拖拽两个Push Buttons到Form中去,修改其属性,一个名字为Open Image,一个为Process。右键按钮选择connect signal为其添加响应函数,选择clicked()。对应的cpp文件多出了on_OpenImage_clicked函数,代码如下:
[cpp] view plaincopy
#include "qttest1.h"
qttest1::qttest1(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
}
qttest1::~qttest1()
{
}
void qttest1::on_OpenImage_clicked()
{
}
接下来要在对应的头文件中添加显示图片的必要代码,添加QFileDialog类的声明,OpenCV必要的include头文件包含,在类中声明一个cv :: Mat成员变量。代码如下:
[cpp] view plaincopy
接下来添加on_OpenImage_clicked的函数内容。代码如下:
[cpp] view plaincopy
类似的办法添加Process按钮的相应代码:
[cpp] view plaincopy
这样就可以实现一个普通的按钮响应。但我们的目的是将图片显示在对话框form中,这还需要进一步深入学习。与MFC中显示图片需要CvvImage类似,要想在Qt的Form中显示图片,图片的格式也必须为QImage,需要将cv::Mat的BGR通道顺序变换为RGBA,QImage的格式为Format_RGB32,调用cvtColor实现(这里例程里调用的为BGR2RGB,然后QImage的格式为Format_RGB888,但我试验显示结果是有问题的,故自己调整了一下)。(后经实验,BGR2RGB,Format_RGB888这组参数对于webcam视频是正确的,对于我当时的实验照片是不正确的,格式的问题真是混乱!!!)实现代码如下:
注意打开图片的路径不要有中文,最后的显示结果为
相关代码的下载地址为http://download.csdn.net/detail/yang_xian521/3793960
本文来源:http://blog.csdn.net/yang_xian521/article/details/6968012
参考这本书的利用Qt创建GUI,不过书中的办法是在Qt Creator下实现的,我这里通过VS2008+Qt实现。下面结合一个例程介绍一下如何在Qt的GUI环境下开发OpenCV。
先新建工程Qt Project --> Qt Application,点击finish完成工程的创建。然后在项目属性里的连接器的附加依赖项里面添加opencv的lib文件。工程创建好之后,一个后缀名为.ui的文件就是关于界面设计的。首先创建两个按钮,拖拽两个Push Buttons到Form中去,修改其属性,一个名字为Open Image,一个为Process。右键按钮选择connect signal为其添加响应函数,选择clicked()。对应的cpp文件多出了on_OpenImage_clicked函数,代码如下:
[cpp] view plaincopy
#include "qttest1.h"
qttest1::qttest1(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
}
qttest1::~qttest1()
{
}
void qttest1::on_OpenImage_clicked()
{
}
接下来要在对应的头文件中添加显示图片的必要代码,添加QFileDialog类的声明,OpenCV必要的include头文件包含,在类中声明一个cv :: Mat成员变量。代码如下:
[cpp] view plaincopy
接下来添加on_OpenImage_clicked的函数内容。代码如下:
[cpp] view plaincopy
类似的办法添加Process按钮的相应代码:
[cpp] view plaincopy
这样就可以实现一个普通的按钮响应。但我们的目的是将图片显示在对话框form中,这还需要进一步深入学习。与MFC中显示图片需要CvvImage类似,要想在Qt的Form中显示图片,图片的格式也必须为QImage,需要将cv::Mat的BGR通道顺序变换为RGBA,QImage的格式为Format_RGB32,调用cvtColor实现(这里例程里调用的为BGR2RGB,然后QImage的格式为Format_RGB888,但我试验显示结果是有问题的,故自己调整了一下)。(后经实验,BGR2RGB,Format_RGB888这组参数对于webcam视频是正确的,对于我当时的实验照片是不正确的,格式的问题真是混乱!!!)实现代码如下:
注意打开图片的路径不要有中文,最后的显示结果为
相关代码的下载地址为http://download.csdn.net/detail/yang_xian521/3793960
本文来源:http://blog.csdn.net/yang_xian521/article/details/6968012
相关文章推荐
- 【Oencv2计算机视觉学习笔记(一)】QT5.3.1 与 OpenCV2.4.9 环境搭建
- opencv学习笔记(二十五)霍夫圆变换
- Python之学习笔记(QT:GUI设计)
- OpenCV学习笔记-用控制器设计模式实现功能模块间的通信
- Opencv Qt 学习笔记(三) 级联器的训练
- install Qt5.4 creater in ubuntu —— opencv 学习笔记 ( 1 )
- Opencv Qt 学习笔记(二)添加contrib外部库
- 学习笔记----图形界面程序Qt安装及其在2410-s上的移植
- 【OpenCV学习笔记】二十五、轮廓查找与绘制(二)访问轮廓中每个点
- python OpenCV学习笔记(二十五):傅里叶变换(Fourier Transform )
- OpenCV学习笔记(8)VS2008 MFC下使用OpenCV2.0进行简单图像处理
- Qt学习笔记之图片显示(自动调整大小适应设计的范围)
- OpenCV 2 学习笔记(11): 算法的基本设计模式<2>:使用Controller
- OPENCV学习笔记3-1_算法设计中使用策略模式
- 非专业码农 JAVA学习笔记 用户图形界面设计与实现-所有控件的监听事件
- QT学习笔记5---QtDesigner设计ui文件并调用
- OpenCV 2 学习笔记(10): 算法的基本设计模式<1>:策略模式(strategy pattern)
- Qt学习笔记-设计简易的截图工具软件
- OPENCV学习笔记3-2_用控制器设计模式实现功能模块间通信
- 在VS2008中使用Qt编程——学习笔记1