在Qt调用OpenCV库编写GUI程序

来源:互联网 发布:网络特产商城行业分析 编辑:程序博客网 时间:2024/05/21 11:21

写在前面

OpenCV本身自带的HighGUI库就可以完成一部分GUI设计编写工作,无奈其中控件实在太少,除了按钮就是滚动条,OpenCV中文站上曾经给出了OpenCV和MFC的搭配调用,但是OpenCV作为跨平台的开源库,如果仅放到MS的PC平台上显然大大限制了其发挥;同时,OpenCV给出了很多人工智能,机器学习的解决方案,其在嵌入式设备中的运用远多于PC,因而跨平台的GUI库无疑十分必要,Qt作为LinuxGUI解决方案的一种,还大量应用在包括Linux Mac Windows等平台上,在嵌入式设备中Qt提供了自身的  X11方案,针对嵌入式设备低功耗,小屏幕,低分辨率的特点特别做出优化,因而Qt和OpenCV的结合无疑是激动人心的。

方法一:VS2008版


首先可以用在Visual Studio中集成使用 Qt Opensource 版本,具体方法如下
以前,Qt windows 只有商业版才支持 Visual Studio, Opensource 版只能使用 MinGW, 无论开发调试都很麻烦。

虽说最近 Qt 出了一款 QtCreator 用来专门支持 Opensource 开发,而且配备了强大的 debug helper 来支持 MinGW(Linux/Unix/Mac 下直接支持 GCC, GDB),但是在windows上开发,最爽的还是 Microsoft 出品的原生编译器和调试器, 相信你也不喜欢看到 MinGW 编译出来的 debug 版本 QtCored4.dll 有几十兆吧。

经过前几天研究发现, Opensource版本也可以直接集成至 VC 中,我们也不用再破解人家商业版本了, 为正版做贡献!

如果你不想使用 M$ 的 IDE, 那有更好的消息是,QtCreator 也支持 Visual studio 的nmake 和 windows debug tool。

先说 Visual Studio

本人使用 Visual Studio 2008 professional 版本、Qt Visual Studio Integration 和 Qt 4.6 Preview 。 另外, 在 Visual Studio 2005 Enterprise 版本、 Qt Visual Studio Add-in 和 Qt 4.5.3 Opensource 上也试过了。

Qt Visual Studio Integration  和 Qt Visual Studio Add-in  有何区别? 前者是商业版,后者是免费版本。前者更强大,可以直接在 VC 中编辑 .UI 文件,编辑 Slots/Signal 实时刷新 moc 文件等等,而 后者只是些基本功能,如工程转换,编译器整合调用等。

1. 下载 Qt 4.6 Preview 版本

当然,你也可以使用 4.5x 版本, 要下载源代码的,或者 SDK 中解出源代码

地址:http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.6.0-tp1.zip

2. 下载 Qt Visual Studio Add-in

当然,你有 Qt Visual Studio Integration  更好了, 或者 google 一个破解版

地址:http://download.qt.nokia.com/vsaddin/qt-vs-addin-1.0.2.exe

3. 使用 VC 编译 Qt

a. 将Qt源码放置到硬盘某个目录,即要安装的目录,如 d:\Qt\4.6-tp1, 不要有空格

b. 配置 Qt

windows 开始 ——> 所有程序 ——> Mircrosoft Visual Studio 2008 ——> Visual Studio Tools ——> Visual Studio 2008 Command Prompt 进入到 命令行下, 然后切换至Qt目录, 如:d:\Qt\4.6-tp1,敲入命令:

D:\Qt\qt-4.6.0-tp1>configure -platform win32-msvc2008

如果你 2005,那就win32-msvc2005了, 2003我没试过。

接着按照提示,选择opensource 版本,同意 GPL/LGPL/GPLV3 等协议就可以了, 接着开始编译 qmake 工具,输出 VC 工程 等等; 等完成后,敲入 nmake 编译所有工程, 或者 nmake release 编译 release 版本, nmake debug 编译 debug 版本等,随便你,这个 程很漫长,有点耐心。 如果担心期间报错不好搞, 可以直接在目录用 VC 下打开 projects.sln 解决方案文件自己编译,效果一样。推荐使用 VC 自己编译,我也是这么搞的,因为编译报错还修改了个文件。

4. 设置系统环境变量

增加 QTDIR 路径为 d:\Qt\4.6-tp1, 即include,bin 的上一级, 把 d:\Qt\4.6-tp1\bin 和 d:\Qt\4.6-tp1\lib 加入到 PATH 中。

5. 安装插件。

安装相关插件Qt  Visual Studio Add-in 或者 Qt Visual Studio Integration。

6. 创建 Qt 工程,编译。

启动 VC,基本上一切就绪了,可以创建 Qt 工程,编译。 如果报错,请检查配置:在VC菜单中选择 Tools 选择 Options,然后点击Qt——> builds, 查看目录是否正切,如果没有,手动添加, 如下图:

然后就开始使用了!

这个虽然耗时耗力,但是一劳永逸,至少不必每次都运行qmake之类的东东了,在没有qt creator的时候是必备的。

然后用VS2008建立Qt工程之后,右键左边的工程文件(不是解决方案),最后一项是Properties,其中找到Linker 的input中加入OpenCV所需要的lib,如cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib等需要的库。当然,这个VS要提前设置到C++的include目录和lib目录等,按照OpenCV中文站网站上说的的方法即可。

这种方法的缺点是VS2008太消耗资源了,但是至少可以适应OpenCV目录不好用的问题,用类似方法也可以用Cximage。尤其是Cximage还要设置各种其它选项,只有VS下设置才比较方便。

方法二:QT Creator

直接用OpenCV中文站里的方法
不过可以直接在creator下修改pro,也不用qmake了
占用资源比vs2008小多了,但是设置不是很方便。尤其是OpenCV如果目录有空格的话,只能重装或者用Xplorer2的硬盘映射功能了!

我目前的设置是

<code>INCLUDEPATH +=   E:\OpenCV\cv\include \E:\OpenCV\cvaux\include \E:\OpenCV\cxcore\include \E:\OpenCV\ml\include \E:\OpenCV\otherlibs\highgui \E:\OpenCV\otherlibs\cvcam\include \LIBS +=   E:\OpenCV\lib\cv.lib \E:\OpenCV\lib\cvaux.lib \E:\OpenCV\lib\cxcore.lib \E:\OpenCV\lib\highgui.lib \E:\OpenCV\lib\ml.lib \</code>

给出一个实例,便于上手,这个东西挂在Google Code上,不过作者很久米有更新XD,不过看看模板就可以抛砖引玉


from: http://logicmd.net/2010/04/gui-programming-in-qt-using-opencv-lib/

0 0