Ubuntu18.04交叉编译OpenCV3.4.9和QT5.12.2至ARM64位平台firefly-RK3399(一)

Ubuntu18.04交叉编译OpenCV3.4.9和QT5.12.2至ARM64位平台firefly-RK3399 (一)

前言:交叉编译的OpenCV自带的GUI在ARM开发板上由于GTK的支持问题很难用自身的GUI显示界面,故配合交叉编译QT用于界面的设计和GUI显示,参考了一些微博,做记录及回顾之用,也能让后人少走些弯路,全程都亲测可行。

一、环境介绍

Host :PC端ubuntu18.04 64位
Target:ARM64开发板 firefly-RK3399 lubuntu18.04 64位
OpenCV版本:3.4.9
QT版本:5.12.2

二、PC端交叉编译OpenCV3.4.9

1.OpenCV源码下载

在这里插入图片描述
下载链接:传送门
可以根据自身需要选择相应的版本,笔者这里选择的是3.4.9版本。下载完解压至任意目录,笔者这里选择的是Ubuntu的下载文件夹。

2.aarch64-linux-交叉编译器下载

友善之臂的aarch64-linux-交叉编译器下载链接(关注我即可无需积分下载):传送门
也可以自己用apt-get在Ubuntu下直接安装。
下载完成后解压至任意目录。
添加交叉编译器到系统环境变量:用Vim打开/etc/profile或者/root/.bashrc或者/etc/bash.barhrc在最后一行添加:export PATH = $PATH:/usr/local/arm/······/bin(刚才解压的目录)。然后重启或者source刚才编辑的文件。
测试环境变量是否添加成功:输入:echo $PATH,看输出信息里面是否有刚才配置的路径,有的话继续在任意目录下输入aarch64-linux-gnu-g++ -v,若有版本信息及具体目录信息则说明安装成功。

3.安装CMake

终端下直接运行cmake-gui,若显示Command not found,那就执行以下的命令安装cmake。

sudo apt-get install cmake
sudo apt  install cmake-qt-gui
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config

后二者是交叉编译OpenCV所需相关依赖,有的话可以不用装。
安装完成后再次运行cmake-gui出现如下画面即说明安装成功。
在这里插入图片描述

4.配置CMake交叉编译OpenCV

在这里插入图片描述
在CMake的GUI中找到刚才解压OpenCV3.4.9的文件夹,作为源码目录,ARM版本的OpenCV3.4.9会生成在如图所示的build文件夹中,选择完毕后点击Configure.
在这里插入图片描述在这里插入图片描述如图所示选择aarch64-gnu.toolchain.cmake作为交叉编译的工具链进行配置,这里注意如果在打开cmake-gui未用root权限打开可能会出错,一定要先进入root账户再打开cmake-gui进行如上的操作,加载配置之后应该会出现如下画面。
在这里插入图片描述根据需要选择需要支持的选项,部分可能需要额外的依赖支持,如果想在开发板上正常使用则还需要交叉编译对应的依赖库,点击generate等待生成,完成后进入OpenCV的源码文件夹下的build文件夹中看看是否生成了Makefile文件,若已经生成则可以进行下一步的编译安装了。
在build文件夹下运行make -j4 && make install,耐心等待即可完成编译和安装。此时build文件中的install文件夹就是我们交叉编译出来的ARM64版本的OpenCV3.4.9.

三.RK3399开发板上的部署

  1. 打包拷贝:将上一步得到的install文件夹打包成tar或者tar.gz再拷贝到RK3399开发板的任意目录下,若不打包则拷贝时会提示某些文件无法复制过去,这里选择开发板中的/opt作为它的解压目录,/opt也是一般默认的软件包的安装位置,便于后续的环境变量的配置及日后的维护和查找。
  2. 添加动态库加载路径:运行Vim /etc/ld.so.conf.d/opencv.conf,会提示该文件不存在将新建一个新的conf文件,在打开的conf第一行里写上自己第一步解压的opencv的lib地址,如
/home/firefly/wangrui/opencv/lib

vim中输入:wq指令保存并退出,随后运行sudo ldconfig激活生效。
3. 环境变量配置:先将解压的opencv文件中位于/lib/pkgconfig下的opencv.pc进行修改:

# Package Information for pkg-config

prefix=/home/wangrui/下载/opencv-3.4.9/build/install
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 3.4.9
Libs: -L${exec_prefix}/lib -lopencv_dnn -lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_videoio -lopencv_imgcodecs -lopencv_features2d -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir_old} -I${includedir_new}

将prefix修改为自己开发板上对应的opencv文件夹的路径如

prefix=/home/firefly/wangrui/opencv

修改完成后保存退出,运行Vim /etc/bash.bashrc 在最后一行添加如下:

 PKG_CONFIG_PATH=/home/firefly/wangrui/opencv/lib/pkgconfig:$PKG_CONFIG_PATH
 export PKG_CONFIG_PATH

注意将路径替换成自己对应的pkgconfig路径, vim中输入:wq指令保存并退出,随后运行source ~/.bashrc激活生效。
运行如下指令若出现如下路径输出则说明pkg配置成功。

(base) root@wr:~# pkg-config --libs --cflags opencv
-I/home/wangrui/opencv3.4.9/install/include/opencv -I/home/wangrui/opencv3.4.9/install/include -L/home/wangrui/opencv3.4.9/install/lib -lopencv_dnn -lopencv_highgui -lopencv_ml -lopencv_objdetect -lopencv_shape -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_videoio -lopencv_imgcodecs -lopencv_features2d -lopencv_video -lopencv_photo -lopencv_imgproc -lopencv_flann -lopencv_core

四.实例交叉编译及运行

1.PC端交叉编译可执行程序

我们可以在opencv-3.4.9/samples/cpp中OpenCV自带的示例程序中选择任意一个进行交叉编译,如下所示:

(base) root@wr:~/下载/opencv-3.4.9/samples/cpp/example_cmake# ls
CMakeLists.txt  example.cpp  Makefile
(base) root@wr:~/下载/opencv-3.4.9/samples/cpp/example_cmake# aarch64-linux-g++ example.cpp -I /home/wangrui/下载/opencv-3.4.9/build/install/include/ -L /home/wangrui/下载/opencv-3.4.9/build/install/lib/ -lopencv_calib3d -lopencv_objdetect -lopencv_core -lopencv_photo -lopencv_dnn -lopencv_shape -lopencv_features2d  -lopencv_stitching -lopencv_flann -lopencv_superres -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs  -lopencv_video -lopencv_imgproc -lopencv_videostab -lopencv_ml

其中aarch64-linux-g++就是第二步中所安装的交叉编译器,若第二步未配置成功,则运行这一步时会提示找不到该命令,上述命令运行完毕后会在当前文件夹下生成一个名为example的可执行文件,这里的-I与-L后面要替换成PC端上对应的opencv的文件夹路径才能正常编译。

2.开发板交叉编译可执行程序

若第五步的开发板上的pkg配置没有问题,则也可以选择将example.cpp拷贝到开发板上然后运行如下指令在开发板上实现编译产生开发板上直接可以运行的可执行文件:

 root@firefly:/home/firefly/wangrui/opencv# arm-linux-g++ -o example example.cpp `pkg-config --cflags --libs opencv`

随后会在opencv文件夹中生成一个名为example的可执行文件,opencv自带的这个exmaple是一个调用摄像头并显示,所以需要用到GUI但是开发板的gtk并不支持,在Bash里./example运行时会出现类似如下的错误提示:

OpenCV Error: Unspecified error (The function is not implemented. 
Rebuild the library with Windows, GTK+ 2.x or Carbon support.
 If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, 
 then re-run cmake or configure script) in cvNamedWindow, file 
 /home/firefly/wangrui/opencv/modules/highgui/src/window.cpp, line 501 
   terminate called after throwing an instance of ‘cv::Exception’

这并不代表opencv不可用,可以写一些简单的代码去测试一下opencv无关gui的函数是否可以正常运行,比如创建一个MAT对象并对它进行一些opencv的函数操作,如裁剪、放缩等,然后将结果保存出来进行查看,下面放一个简单的例子供测试opencv核心函数是否可以在RK3399开发板上正常运行:

#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char** argv )
{
    Mat src = Mat::zeros(12,12, CV_8UC3);
    Rect rect(src.cols/4, src.rows/4, src.cols/2, src.rows/2);
    src=src(rect);
    imwrite("test.jpg", src);
    printf("创建成功! \n");
    waitKey(0);
    return 0;
}

运行完之后可以查看该程序的同路径文件夹下是否生成了test.jpg,将其打开查看是否正常创建了MAT对象以及执行了裁剪的功能,若测试成功,则说明opencv的交叉编译已经完成,现在只需要再对QT进行交叉编译,利用QT作为图形界面显示窗口去进行相关gui功能的实现,QT的交叉编译将在下一篇博客中详细介绍。

  • 3
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: 要在Ubuntu 18.04安装OpenCV 3.4.9,您可以按照以下步骤操作: 1. 打开终端并更新软件包列表:sudo apt-get update 2. 安装所有必需的依赖项:sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev 3. 下载OpenCV 3.4.9源代码:git clone https://github.com/opencv/opencv.git 4. 创建一个构建目录并进入该目录:cd opencv && mkdir build && cd build 5. 运行以下指令进行配置:cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. 6. 编译OpenCV:make -j4 7. 安装OpenCV:sudo make install 8. 最后,重新载入动态链接库:sudo ldconfig 现在您已经成功安装了OpenCV 3.4.9。 ### 回答2: 在安装前,请确保已经安装了Ubuntu 18.04和一些必要的软件包和编译工具,如build-essential, cmake, git, python等。安装过程分为三个主要步骤: 步骤1:下载和安装OpenCV的依赖项 sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libv4l-dev libxvidcore-dev libx264-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python3-dev python3-numpy libjpeg8-dev libjpeg-turbo8-dev libtiff5-dev libjasper-dev libpng12-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev libtbb-dev qt5-default libopencv-dev libqt5opengl5-dev 步骤2:下载和编译OpenCV 进入OpenCV的Github页面:https://github.com/opencv/opencv/releases,并下载此时的最新版本。 mkdir ~/opencv cd ~/opencv wget -O opencv.tar.gz https://github.com/opencv/opencv/archive/3.4.9.tar.gz tar xf opencv.tar.gz 删除.tar.gz文件 rm opencv.tar.gz 这时候你就得到opencv-3.4.9文件夹了 接下来,进入opencv-3.4.9/build文件夹,创建编译目录并进行编译。 mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D ENABLE_NEON=ON .. make -j$(nproc) sudo make install 现在,opencv就已成功地安装到了/usr/local/路径。 步骤3:验证并使用OpenCV 为了验证OpenCV是否已成功安装,请运行opencv_version命令。 opencv_version 有关如何使用OpenCV,这里就不再详述,您可以参考OpenCV的官方文档: http://docs.opencv.org/3.4.9/d8/dfe/classcv_1_1Mat.html 以上就是安装OpenCV的详细步骤,希望对您有所帮助。 ### 回答3: Ubuntu 18.04是一款常用的操作系统,安装OpenCV 3.4.9可以执行以下步骤: 1. 更新系统软件源 在终端中执行如下操作命令: sudo apt-get update sudo apt-get upgrade 2. 安装依赖库 在终端中执行如下操作命令: sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev gfortran openexr libeigen3-dev libtbb-dev 3. 下载OpenCV源码 在终端中执行如下操作命令: sudo mkdir /opt/opencv cd /opt/opencv sudo wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.9.zip sudo unzip opencv.zip cd opencv-3.4.9/ 4. 编译OpenCV 在终端中执行如下操作命令: sudo mkdir build cd build sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local .. sudo make -j8 sudo make install 5. 配置环境变量 在终端中执行如下操作命令: sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf' sudo ldconfig 6. 验证OpenCV安装是否成功 在终端中执行如下操作命令: cd opencv-3.4.9/samples/cpp/ sudo chmod +x build_all.sh sudo ./build_all.sh sudo ./cpp-example-edge 以上即是在Ubuntu 18.04上安装OpenCV 3.4.9的步骤,需要注意的是,安装过程中需要保证设备已连接网络,依赖库的安装及源码下载需要时间,请等待执行完毕。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值