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个库文件。这里的库是相对链接,画张示意图。
Qt & opencv 学习(一)的更多相关文章
- Qt & opencv 学习(二)
例子:打开图片并显示.打开图片利用Qt的标准文件对话框,第一步是利用OpenCV创建窗口并显示. 添加一个Button,转到信号槽添加代码: using namespace cv; Mat image ...
- 开始QT+OpenCV学问
最近一个月.由于超声造影软件工具做.因此,开始接触OpenCV.使用OpenCV的话.除了图像处理,其它功能都非常弱.所以又開始学习MFC. 从原先的.net C#编程环境一下变成MFC还真有点不习惯 ...
- 项目实战:Qt+OpenCV大家来找茬(Qt抓图,穿透应用,识别左右图区别,框选区别,微调位置)
前言 本项目的出现理由只是笔者的一个念头,于是利用专业Qt和Opencv相关的知识开发一个辅助工具,本文章仅用于Qt和Opencv结合的学习. Demo演示效果 运行包下载地 ...
- Qt opencv程序运行异常
搭建了两次qt opencv vs ,经常出现程序运行异常.找了几个原因如下: 1.opencv的路径未配置或配置有误. 2.qt中pro文件包含不正确. 3.测试opencv程序不正确.如视频或图片 ...
- opencv学习笔记(七)SVM+HOG
opencv学习笔记(七)SVM+HOG 一.简介 方向梯度直方图(Histogram of Oriented Gradient,HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子 ...
- opencv学习笔记(六)直方图比较图片相似度
opencv学习笔记(六)直方图比较图片相似度 opencv提供了API来比较图片的相似程度,使我们很简单的就能对2个图片进行比较,这就是直方图的比较,直方图英文是histogram, 原理就是就是将 ...
- opencv学习笔记(五)镜像对称
opencv学习笔记(五)镜像对称 设图像的宽度为width,长度为height.(x,y)为变换后的坐标,(x0,y0)为原图像的坐标. 水平镜像变换: 代码实现: #include <ios ...
- opencv学习笔记(四)投影
opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...
- opencv学习笔记(三)基本数据类型
opencv学习笔记(三)基本数据类型 类:DataType 将C++数据类型转换为对应的opencv数据类型 OpenCV原始数据类型的特征模版.OpenCV的原始数据类型包括unsigned ch ...
随机推荐
- 学习系列 - 马拉车&扩展KMP
Manacher(马拉车)是一种求最长回文串的线性算法,复杂度O(n).网上对其介绍的资料已经挺多了的,请善用搜索引擎. 而扩展KMP说白了就是是求模式串和主串的每一个后缀的最长公共前缀[KMP更像是 ...
- BZOJ 4516 [Sdoi2016]生成魔咒 ——后缀自动机
本质不同的字串,考虑SA的做法,比较弱,貌似不会. 好吧,只好用SAM了,由于后缀自动机的状态最简的性质, 所有不同的字串就是∑l[i]-l[fa[i]], 然后后缀自动机是可以在线的,然后维护一下就 ...
- 【前端学习笔记】ajax与php之间的互动
ajax通常会牵扯到跨域问题,所以我们通常的解决方案是,通过ajax将参数传到后台php文件中 在后台通过php文件进行跨域访问api,再将结果返回到ajax响应中.需要注意一下几点: 1.可以通过& ...
- 虚拟机搭建--hyper-V使用教程
http://jingyan.baidu.com/article/4e5b3e19695d9f91901e24bb.html
- Mac VMware Fusion Centos7 静态ip配置
一直没用mac装过虚拟机,最近因为一些原因不得不装一个,但是被这个静态ip配置把头都搞痛了(这里吐槽一下百度,我前几页都看了几遍,搜索关键字就是我现在的标题,结果都是一些抄抄抄并且不管用的攻略,最后使 ...
- Aspose.Words使用代码插入表格
Aspose.Words是一款功能强大的word文档处理控件,在不需要安装word的条件下,可进行word的创建,修改,转换等操作. Aspose.Words可以简单使用该产品提供的DocumentB ...
- 程序包com.sun.image.codec.jpeg不存在解决方法
https://blog.csdn.net/u011627980/article/details/50436842
- js采用concat和sort将N个数组拼接起来的方法
<script type="text/javascript" > function concatAndSortArray(array1, array2) { if (a ...
- 标准IO函数以及基本知识点总结
什么是标准IO呢?有哪些特点? 标准IO是标准c库提供的对文件操作的函数接口.他的特点是:1 带缓存,2 大部分都调用系统接口函数实现.(c库就是一种实现好的函数接口,作用是屏蔽下层细节.提供上层接口 ...
- PPAPI+Skia实现的涂鸦板
在PPAPI插件中使用Skia画图介绍了怎样在PPAPI中使用Skia,文末说回头要提供一个简单的涂鸦板插件,这次我来兑现承诺了. foruok原创,关注微信订阅号"程序视界"可联 ...