详解在 Qt 程序中使用OpenCV

移动开发
本文介绍的是详解在 Qt 程序中使用OpenCV,OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。

Qt 程序中使用OpenCV是本文要介绍的内容,OpenCV是一个基于BSD许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。[

OpenCV安装

关于OpenCV的安装,参考:

http://opencv.willowgarage.com/wiki/InstallGuide

安装文档写得无比详细, 这里就不赘述了。 简单来说就是安装CMake,然后用cmake命令去配置和编译。

最简单的命令是 “cmake .”。 这一步应该不算一帆风顺, 笔者遇到了gstreamer头文件找不到的问题。 在OpenCV的代码里搜索一番没找到gstreamer的头文件目录在哪里配置, 而笔者对cmake又非常不熟悉, 只好用了个土方法, 在/usr/include下给本机的gstreamer目录建了个link到OpenCV使用的gstreamer路径。 OpenCV使用的gstreamer路径在生成的Makefile里提到了, 是/usr/include/gstreamer-0.10, 这个路径是从哪儿得到的这一点很神奇…谁要是知道的请不吝赐教啊。 笔者电脑中的路径则为/usr/inlcude/gstreamer-0.10-a, 故建立链接如下:

  1. ln -s /usr/include/gstreamer-0.10-a /usr/include/gstreamer-0.10 

代码例子

OpenCV里带了很多的sample, 在samples目录下, 其中一个引起了笔者的注意, 那就是samples/cpp/Qt_sample。 简单看了看代码, OpenCV里已经实现了和Qt的集成, 里面用Qt的API写了widget,可以直接把摄像头取得的内容显示在Qt的widget里。

但这个例子工程似乎并没有做好, 编译过程实在是太曲折了, 到目前还没找到方法编译成功, 报的错误是undefined reference。 第一个遇到的问题是默认的编译选项不会去编译samples目录, 为了寻找合适的编译选项颇费了点脑筋(因为笔者对cmake基本上可以说是一窍不通的…汗)。 尝试单独编译samples目录, 失败了, 报了个莫名其妙的cmake版本的问题。

估计是有些依赖的东西是需要顶层目录里读取的。 继续查找相关的脚本和配置, 发现CMakeList.txt里提到了一个BUILD_EXAMPLES变量, 当此变量为真值时会编译samples目录。 但笔者绞尽脑汁也没想出来怎么才能从外部配置这个值, 是用环境变量? cmake参数? 都试了, 没一个管用的。 找来找去发现了OpenCV的文档里有个例子,说明了如何设置变量,是在cmake的命令行传入 -D BUILD_EXAMPLES=ON这样的方式。 如此一来build整个工程时就会自动为samples目录创建Makefile。所以configure的命令变成:

  1. cmake -D BUILD_EXAMPLES=ON . 

生成的例子都在OPENCV_DIR/bin下,大家可以运行看看。(不包括Qt_sample这个例子)

在Qt中使用OpenCV

Qt程序要想用OpenCV的函数需要将opencv的头文件和库在工程pro文件里配置一下,添加INCLUDEPATH和LIBS,具体的方法参考:

Qt For Symbian 在pro文件中添加库文件

详解 QT 中.pro文件的写法

http://www.opencv.org.cn/index.php/%E5%9C%A8Qt%E4%B8%AD%E4%BD%BF%E7%94%A8OpenCV%E5%BA%93

另外有一篇更实用更详细的文章, 还提供几个很好的例子, 是绝佳的参考。 大家有问题就仔细看这篇文章, 一般都能得到解答:

http://code.google.com/p/qt-opencv-multithreaded/wiki/Documentation

小结:关于详解在 Qt 程序中使用OpenCV的内容介绍完了,希望本文对你有所帮助。更多相关内容请参考编辑推荐。

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-06-28 10:03:37

Qt OpenCV qmake

2011-06-10 09:09:38

Qt Creator OpenCV

2011-06-15 10:08:01

Qt CVS

2012-04-23 10:30:38

Hadoop

2011-06-08 16:56:37

VS2008 Qt

2010-04-21 17:50:59

共享库bada

2011-08-31 16:30:19

Lua多线程

2009-09-22 12:17:59

ibmdwLotus

2016-01-25 15:09:22

JavaScriptC程序

2011-07-01 18:35:17

QT 控制台

2009-06-19 13:45:53

Java应用程序Jfreechart

2020-03-11 09:15:25

微信asyncawait

2013-10-09 11:15:49

Ubuntu应用程序

2011-05-27 08:48:13

Android HTML

2021-09-07 10:24:36

Vue应用程序Web Workers

2011-09-01 15:26:51

QtMysql数据库

2011-07-01 13:03:32

QT 线程 串口

2022-11-23 15:26:25

Ubuntu程序坞

2009-11-23 19:52:55

ibmdwFlex

2022-08-30 20:00:37

零信任Linkerd
点赞
收藏

51CTO技术栈公众号