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 ...
随机推荐
- mysql5.7.23版本环境配置
亲身实践安装mysql,用时居然花费了三个小时,在有那么多教程的情况下,依然在不该花费时间的路上浪费了太多时间.希望这篇文章能够帮助大家少走弯路~~ 1.下载我下载的是64位. 2.解压下载之后,我选 ...
- BZOJ2726 [SDOI2012]任务安排 【斜率优化 + cdq分治】
题目 机器上有N个需要处理的任务,它们构成了一个序列.这些任务被标号为1到N,因此序列的排列为1,2,3...N.这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i ...
- 解决 sqlalchemy 报错:(1193, "Unknown system variable 'tx_isolation'")
1出现此报错的原因是使用的mysql8.0 以前用的是:tx_isolation 现在用是: transaction_isolation a.通过升级 sqlalchemy 的方法可以解决此问题, p ...
- 【Codeforces Round #503 (Div. 2)】
A:https://www.cnblogs.com/myx12345/p/9843198.html B:https://www.cnblogs.com/myx12345/p/9843245.html ...
- C# 判断上传图片是否被PS修改过的方法
今天在网上发现一个判断图片是否被Photoshop修改过的方法.发现还不错,呵呵.摘录下来. 讲下基本的原理:其实每张被photoshop修改过的图片都会有Adobe Photoshop这样的字样在图 ...
- Laravel 控制器的response
public function response(){ //响应json $data = [ 'errCode' => 0, 'errMsg' => 'success', 'data' = ...
- unix grep命令的大致实现
用到了strstr(a,b)函数和getline()函数,strstr(a,b)函数看是否能在字符串a中找到字符串b,若找到返回指向,若没找到返回NULL strstr实现可以看:Implement ...
- json常见用法-loads、jumps、load、jump
这一篇博客的目的主要是想说明一个问题:干什么事情要抓住重点,不要力求完美,不要追求那种'大而全'的办事方式,因为时间是有限的,而客观事物(这里主要指技术方面的知识)是无限的,so,anyway! 1. ...
- spark学习(六)Java版RDD基本的基本操作
1.map算子 private static void map() { //创建SparkConf SparkConf conf = new SparkConf() .setAppName(" ...
- [转] twemproxy ketama一致性hash分析
评注:提到HAProxy业务层proxy, twemproxy存储的proxy. 其中还提到了ketama算法的实现源码 转自:http://www.cnblogs.com/basecn/p/4288 ...