Qt & opencv 学习(一)

 Qt也没怎么系统学过,opencv也没系统学过。慢慢来,一步一步弄清楚吧。

 天嵌科技有个文档,先去看这个文档,主要是开发环境的配置。文档名字就是QT应用程序开发手册-20150918.pdf。在QT里面设置交叉编译器,设置qmake的路径。qmake是为了生成makefile文件,交叉编译器根据makefile编译程序并生成可执行文件。

 用qt creater新建一个工程后,随便一个应用程序。编译这个程序的步骤是这样的。

 1)打开终端。
 2)cd /root/HelloEmbedSky 进入工程源码目录:/root/HelloEmbedSky.
 3)执行 source /opt/EmbedSky/qt-4.5/setARM_env
 4)执行$QMAKE
 5)执行 make
 6)同样生成 HelloEmbedSky,将该程序放到开发板上使用./HelloEmbedSky -qws 即可运行起来。
 /opt/EmbedSky/qt-4.5/setARM_env里的内容又是怎样的呢。

 内容如下:也就是这个里面设置了很多环境变量。$QMAKE要用这些环境变量。

 #!/bin/sh

 export QPEDIR=/opt/EmbedSky/qt-4.5/__install/arm/bin
 export QTOPIA_DEPOT_PATH=/opt/EmbedSky/qt-4.5/__install/arm/bin
 export QTDIR=/opt/EmbedSky/qt-4.5/__install/arm/bin
 export DQTDIR=/opt/EmbedSky/qt-4.5/__install/arm/bin
 export QMAKE=/opt/EmbedSky/qt-4.5/__install/arm/bin/qmake
 export UIC=/opt/EmbedSky/qt-4.5/__install/arm/bin/uic
 export TMAKEDIR=/opt/EmbedSky/qt-4.5/__install/arm/bin
 export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++
 export PATH=$QPEDIR/bin:$QTDIR/bin:$DQTDIR/bin:$TMAKEDIR/bin:$PATH
 export LD_LIBRARY_PATH=$QPEDIR/lib:$QTDIR/lib:$DQTDIR/lib:$LD_LIBRARY_PATH

 按照上面的步骤就能成功编译出嵌入式QT的应用程序。前提是你安装好了Qt Creater,并安装好了交叉编译器。

 好了,嵌入式Qt能够用了,怎么在Qt里面使用opencv里的内容呢。主要有两点,一、头文件包含  二、链接库动态加载

编译好opencv后会得到include文件夹,这个文件下面有两个文件夹opencv和opencv2。将include文件夹整体复制到当前工程目录下来。

 第二个就是动态链接库了,libopencv_core.so  libopencv_highgui.so  libopencv_imgproc.so 这三个文件是opencv编译后得到的。这里将这3个文件放在/opt/EmbedSky/4.4.6/lib目录下。

 既然要增加对opencv库函数的使用,肯定要在工程的makefile文件中,添加上面的头文件路径和动态链接库加载。先看下上面工程生成的makefile文件,上面操作后的第(4)部$QMAKE后,就得到了makefile。下面是makefile里的内容,文件比较长,摘取重要的部分。

 CC = arm-linux-gcc
 CXX = arm-linux-g++
 DEFINES = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
 CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
 CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
 INCPATH = -I/opt/EmbedSky/qt-4.5/__install/arm/mkspecs/default -I. -I/opt/EmbedSky/qt-4.5/__install/arm/include/QtCore -I/opt/EmbedSky/qt-  4.5/__install/arm/include/QtNetwork -I/opt/EmbedSky/qt-4.5/__install/arm/include/QtGui -I/opt/EmbedSky/qt-4.5/__install/arm/include -I. -Isrc -Iinclude -Iinclude/opencv -Iinclude/opencv2 -I. -I.
 LINK = arm-linux-g++
 LFLAGS = -Wl,-O1 -Wl,-rpath,/opt/EmbedSky/qt-4.5/__install/arm/lib.
 LIBS = $(SUBLIBS) -L/opt/EmbedSky/qt-4.5/__install/arm//lib -L. -lopencv_core -lopencv_highgui -lopencv_imgproc -lQtGui -L/tslib-1.4/libc -L/opt/EmbedSky/qt-4.5/__install/arm//lib -lts -lQtNetwork -lQtCore -lm -lrt -ldl -lpthread
AR = arm-linux-ar cqs
 RANLIB =
 QMAKE = /opt/EmbedSky/qt-4.5/__install/arm/bin/qmake

 上面的makefile摘取的内容已经被我更改了,注意黑色加粗和红色标注的部分。INCPATH就是编译时的包含路径,LIBS就是动态链接哪些库。

 上面的INCPATH增加了3个头文件查找位置,后面的LIBS增加了3个库文件。这里的库是相对链接,画张示意图。

时间: 2024-08-04 17:23:46

Qt & opencv 学习(一)的相关文章

QT+opencv学习笔记一 opencv配置及Mat浅拷贝

今天终于把Qt + opencv配置成功了,中间有一些曲折,在这里记录一下. vs2013 + opencv的方法之前记录过,但这次的不太一样,我们一开始按照这篇文章配置pro Qt5中进行OpenCV开发教程 但是,死活出不来结果,研究发现,我们用的是 mingw 不是 vs,这个方法适合vs编译器 (具体可以参考:win7下的Qt环境+OpenCV视觉库) 后来,我们找到了这篇文章 QT creator+OpenCV2.4.2+MinGW 在windows下开发环境配置 但是还是有点曲折,

开始QT+OpenCV的学习

最近一个月,因为要做超声造影工具软件,所以开始接触OpenCV,而单独使用OpenCV的话,除了图像处理,其他功能都很弱,所以又开始学习MFC. 从原先的.net C#编程环境一下变成MFC还真有点不习惯,因为C++从学校出来后就没有再接触了,一直用C或C#,好在任何编程语言都是有通性的,何况C++本来就是C的升级,所以花了一两个星期恶补了一顿,总算有点感觉了,现在使用MFC编程没有了任何青涩感,也不用过分关注什么语言,什么环境,而是专心把功能实现好.软件的核心并不在你编程编的好不好,而是你能否

开始QT+OpenCV学问

最近一个月.由于超声造影软件工具做.因此,开始接触OpenCV.使用OpenCV的话.除了图像处理,其它功能都非常弱.所以又開始学习MFC. 从原先的.net C#编程环境一下变成MFC还真有点不习惯,由于C++从学校出来后就没有再接触了,一直用C或C#.好在不论什么编程语言都是有通性的.何况C++本来就是C的升级.所以花了一两个星期恶补了一顿,总算有点感觉了,如今使用MFC编程没有了不论什么青涩感.也不用过分关注什么语言,什么环境,而是专心把功能实现好.软件的核心并不在你编程编的好不好,而是你

手写数字识别【QT+OpenCV】

[说明] 手写数字识别的实现方式很多. 本文尽量将其简化,以让大家能够快速了解怎样实现一个动起来的系统. [截图] [思路] 1.特征提取 将图像划分为5*5大小的区域,然后计算该区域内黑色(或白色)的像素点所占比例. 将需要测试的图像.用来分类的图像都进行特征提取. 2.计算当前的测试图像与用来分类的图像之间的欧氏距离. 3.找出欧式距离最小的值即为与当前测试图像最匹配的图像,即将该图像所代表的数字作为当前测试图像的结果. 4.为了处理上的方便,做了简化处理如下: 4.1仅仅选用10幅用来分类

OpenCV 学习(利用滤波器进行边缘提取)

OpenCV 学习(利用滤波器进行边缘提取) 通过低通滤波器,我们可以将图像平滑,相反的,利用高通滤波器可以提取出图像的边缘. Sobel 滤波器 Sobel 滤波器是一种有方向性的滤波器,可以作用在 X 方向或 Y 方向. 关于这种滤波器的理论介绍可以参考: https://en.wikipedia.org/wiki/Sobel_operator 函数原型如下: void Sobel( InputArray src, OutputArray dst, int ddepth, int dx, i

QT - OpenCV的安装与配置 (win7 64 bit + OpenCV3.0 + minGW32)

QT - OpenCV的安装与配置 想在QT中使用OpenCV来实现连续图片转成视频的功能,于是打上了OpenCV的主意 安装OpenCV的过程也是充满了曲折,但是最终还是安装成功了,现记录安装过程,以防系统重装后傻眼. 感谢以下前辈的分享: https://zahidhasan.wordpress.com/2014/08/19/qt-5-3-1-64-bit-mingw-windows/ http://www.tagwith.com/question_113329_opencv-3-0-vid

Qt多线程学习:创建多线程

[为什么要用多线程?] 传统的图形用户界面应用程序都仅仅有一个运行线程,而且一次仅仅运行一个操作.假设用户从用户界面中调用一个比較耗时的操作,当该操作正在运行时,用户界面一般会冻结而不再响应.这个问题能够用事件处理和多线程来解决. [Linux有线程的概念吗?] 传统的UNIX系统也支持线程的概念,但一个进程里仅仅同意有一个线程,这样多线程就是多进程.Linux下的Posix线程(pthreads)是一种轻量级的进程的移植性实现,线程的调度由内核完毕,每一个线程都有自己的编号.假设使用线程,整体

OpenCV学习之六: 使用方向梯度直方图估计图像旋转角度

在备份ltedecoder程序时,需要把此目录拷由到bak目录下,但decoder目录下有个大文件,不需要备份,还有日志问题,也不需要备份,如何实现呢?? 方法: cd /source-dir find . -name .snapshot -prune -o -print0 | cpio -pmd0 /dest-dir 解释: This command copies the contents of /source-dir to /dest-dir, but omits files and dir

Opencv学习笔记(六)SURF学习笔记

原创文章,转载请注明出处:http://blog.csdn.net/crzy_sparrow/article/details/7392345 本人挺菜的,肯定有非常多错误纰漏之处 ,希望大家不吝指正. 看了harris角点检測之后,開始研究SURF角点检測,发现挺复杂的,一时也仅仅了解了大概,把了解的东西总结下,以便下次深入学习. SURF角点检測算法是对SIFT的一种改进,主要体如今速度上,效率更高.它和SIFT的主要差别是图像多尺度空间的构建方法不同. 在计算视觉领域,尺度空间被象征性的表述