zoukankan      html  css  js  c++  java
  • 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个库文件。这里的库是相对链接,画张示意图。

  • 相关阅读:
    基于讯飞语音API应用开发之——离线词典构建
    在Linux下安装redis
    java学习路线
    怎么做压力测试
    性能测试概念及参数介绍
    总结1-JMeter压力测试
    在软件测试面试过程中如何进行自我介绍?
    Python模块常用的几种安装方式
    Jmeter(三)关联数组
    Jmeter(二)关联
  • 原文地址:https://www.cnblogs.com/kanite/p/5112633.html
Copyright © 2011-2022 走看看