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个库文件。这里的库是相对链接,画张示意图。

posted @ 2016-01-08 11:32  kanite  阅读(506)  评论(0编辑  收藏  举报