linux下qt+opencv、arm端移植opencv

时间:2024-03-25 20:27:45

linux下qt+opencv、arm端移植opencv

团队要做一个嵌入式定位的项目,arm端的工作进行一些图像采集、图像预处理,及多种通信接口管理、GUI显示、人机交互等工作。首先先把opencv移植来进行一些实验测试。

本文记录下在linux下移植opencv及arm端移植的过程。

qt的安装过程参考前面转载的一篇文章  http://blog.csdn.net/yuechuxuan/article/details/78216735

一、Linux下移植opencv配合qt使用

(1)首先更新源,sudo update sudo upgrade

然后下载opencv编译过程中用到的一些包,搜索一下与opencv相关的有好多。这里我安装了其中的一些,sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev

pkg-config。

下载cmake,cmake-qt-gui

sudo apt-get install cmake cmake-qt-gui

(2)下载opencv包

我是在opencv官网下载的opencv2.4.11 for linux。下载后解压进入,opencv-2.4.11目录下,执行cmake-gui

点击Configure

linux下qt+opencv、arm端移植opencv

Generate后进入 opencv-x86目录下 执make          

make install 在/usr/local/lib下会出现编译好的lib文件。

(3)安装完成后对系统变量进行配置

sudo gedit /etc/ld.so.conf.d/opencv.conf

在其中添加/usr/local/lib 保存后执行sudo ldconfig

sudo gedit /etc/bash.bashrc

在其中添加PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig

export PKG_CONFIG_PATH



(4)测试运行一下

在.pro文件中添加

INCLUDEPATH+=/usr/local/include\

/usr/local/include/opencv\

/usr/local/include/opencv2

LIBS += /usr/local/arm/libopencv_highgui.so \

/usr/local/arm/libopencv_core.so \

/usr/local/arm/libopencv_imgproc.so

运行后结果出现一个框

测试完毕,linux下qt+opencv搭建成功。

二、 arm端移植opencv

1.新建opencv-arm目录,进入opencv-2.4.9执行cmake-gui 

2.点击Configure,保持unixmakefiles选项,选择specify options for corss-compiling来选择编译器路径

linux下qt+opencv、arm端移植opencv

3.operating system填入os名,即编译器名arm-linux  os version这个可以不填,我不清楚这个填内核版本还是编译器版本,compilers C填入编译器arm-linux-gcc的elf路径,C++填入编译器arm-linux-g++的elf路径,target root是寻找lib和include文件的,这些文件都在arm-linux编译器文件路径下

linux下qt+opencv、arm端移植opencv

4.去掉WITH_TIFF  WITH_CUDA,修改CMAKE_BUILD_TYPE为Release为要生成文件的路径, 修改CMAKE_INSTALL_PREFIX,去掉WITH_OPENGL,修改CMAKE_FIND_ROOT_PATH为Linux安装库的路径

linux下qt+opencv、arm端移植opencv

linux下qt+opencv、arm端移植opencv

linux下qt+opencv、arm端移植opencv


5.点击generate,进入到opencv-arm/CMakeCache.txt下找到CMAKE_EXE_LINKER_FLAGS:STRING='',

CMAKE_EXE_LINKER_FLAGS原来为空,在该行添加-lpthread -lrt -ldl三个参数。

linux下qt+opencv、arm端移植opencv


6.执行make

 make install

三、出现的问题

1.cmake-gui时出现

error in configuration process ,project files may be invalid

linux下qt+opencv、arm端移植opencv

查阅了好多资料终于解决了,在cmake-gui设置好然后configure的时候,刚刚开始就出现了这个错误,往前翻了一下具体的错误,发现有这么一项    make:arm-linux-g++:Command not found  命令找不到(忘记截图了) ,然后我又在终端里 输入 arm-linux-g++ -v   ,出现 no such file or directory , 此时问题终于找到了, 就是gcc和g++命令找不到,但是我已经交叉编译过了,环境变量也设置了,为什么还是找不到呢?最后终于发现是因为我的Linux系统是64位的,64位机与32位机不兼容,需要安装sudo apt-get install ia32-libs(这个只是网络版本),我输入sudo apt-get install ia32-libs时出现

Package ia32-libs is not available, but is referred to by another package.

This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  lib32z1 lib32ncurses5 lib32bz2-1.0
E: Package 'ia32-libs' has no installation candidate

所以我就输入 apt-get install lib32z1 ,同样解决了问题

linux下qt+opencv、arm端移植opencv

linux下qt+opencv、arm端移植opencv

然后继续configure,如果还有错误,请参考下面的问题2

2.在configure的过程中出现

CMake Error at cmake/FindCUDA.cmake:762(if):

  if given arguments:

 

    "CUDA_VERSION""VERSION_GREATER" "5.0" "AND""CMAKE_CROSSCOMPILING" "AND"   "MATCHES" "arm""AND" "EXISTS""CUDA_TOOLKIT_ROOT_DIR-NOTFOUND/targets/armv7-linux-gnueabihf"

 

  Unknown arguments specified

  Call Stack (most recent call first):

  cmake/OpenCVDetectCUDA.cmake:26(find_package)

  cmake/OpenCVFindLibsPerf.cmake:24 (include)

  CMakeLists.txt:423 (include)

这个CUDA有问题,看看WITH_CUDA默认确实是选中的,在上面的框中去掉WITH_CUDA的√,继续configure

4.我第一次安装的版本是opencv3.8.0,但是把在make的过程中出现

make[2]: *** [modules/imgproc/CMakeFiles/opencv_imgproc.dir/src/drawing.cpp.obj] Error 1
make[1]: *** [modules/imgproc/CMakeFiles/opencv_imgproc.dir/all] Error 2
make: *** [all] Error 2

linux下qt+opencv、arm端移植opencv

试了很多种方法也没有解决,最后觉得应该是opencv的版本太高了,动态库的链接有问题,也没有解决,不知道是什么原因,还是用低版本的吧!



另外还有一些用到的命令

sudo apt-get install libxext-dev libxt-dev libxrender-dev libxdamage-dev libgl1-mesa-dev libglu1-mesa-dev libdbus-1-dev libgconf2-dev libicu-dev libedbus-dev



qt PC端安装完成后还要进行如下操作

安装完成后一般还要修改一些配置。

在命令行中输入:sudo vi  /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

打开default.conf文件,

将第一行改为bin目录的路径,第二行改为qt5.8.0目录的路径。

保存退出。


linux下qt+opencv、arm端移植opencv

然后在命令行中输入:sudo apt-get install libgl1-mesa-dev

安装 libgl1-mesa-dev






参考的文章

http://blog.csdn.net/jd404647184/article/details/45745535

http://blog.csdn.net/jakeo0o/article/details/54584199

http://www.cnblogs.com/emouse/archive/2013/04/01/2993842.html