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

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

前言:上两篇博客中我们将openCV和qt5.12.2分别交叉编译并将其部署至RK3399开发板上,并分别验证了二者在开发板上都可以顺利运行,接下来则需要在PC端搭建将二者结合的IDE便于后续的编程及调试。

一、环境介绍

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

二、QT Creator安装及配置

1.下载及安装QT Creator

Qt Creator集成开发环境可以从官网上下载:传送门,至于版本并不重要,下载一个比较新的版本就行,我这里用的是qt-opensource-linux-x64-5.9.9.run,首先用下面的命令改变文件的权限:

sudo chmod u+x qt-opensource-linux-x64-5.9.9.run

再运行如下指令进行安装:

./qt-opensource-linux-x64-5.9.9.run

安装时需要注册一个QT的账号登录,自行去官网注册即可,然后会来到如下画面:
Ubuntu18.04交叉编译OpenCV3.4.9和QT5.12.2至ARM64位平台firefly-RK3399 (三)_第1张图片将Qt5.9.9勾选去掉,我们只需要下面的QT Creator,稍等一会即可安装完毕。

2.运行QT Creator

打开QT Creator的安装文件夹,进入/bin文件夹,运行./qtcreator.sh脚本启动QT Creator:

(base) root@wr:/opt/Qt5.9.9/Tools/QtCreator/bin# pwd
/opt/Qt5.9.9/Tools/QtCreator/bin
(base) root@wr:/opt/Qt5.9.9/Tools/QtCreator/bin# ls
qbs            qbs-create-project  qbs-setup-toolchains  qtcreator.sh
qbs-config     qbs-setup-android   qt.conf
qbs-config-ui  qbs-setup-qt        qtcreator
(base) root@wr:/opt/Qt5.9.9/Tools/QtCreator/bin# ./qtcreator.sh

来到如下界面且无错误弹窗提示则说明安装及启动成功,若不按照该方式打开QT Creator打开后会不断弹出错误提示导致无法正常使用。
Ubuntu18.04交叉编译OpenCV3.4.9和QT5.12.2至ARM64位平台firefly-RK3399 (三)_第2张图片

3.QT Creator环境配置

Ubuntu18.04交叉编译OpenCV3.4.9和QT5.12.2至ARM64位平台firefly-RK3399 (三)_第3张图片
Ubuntu18.04交叉编译OpenCV3.4.9和QT5.12.2至ARM64位平台firefly-RK3399 (三)_第4张图片
点击工具控件下的选项,在Kits中点击QT Versions,手动添加之前交叉编译好的qt5.9.9或qt5.12.2,由于qt5.12.2是直接下载下来的,未进行环境变量的配置,所以5.12.2前面是红色感叹号显示不可用,若之前未进行qt5.9.9的交叉编译,则按照上一篇博客的readme文档中对下载的qt5.12.2进行环境变量配置后即可正常使用,其核心都是指定qt的qmake路径即可。

Ubuntu18.04交叉编译OpenCV3.4.9和QT5.12.2至ARM64位平台firefly-RK3399 (三)_第5张图片
随后点击编译器,点击Manual手动添加C及C++的ARM64的交叉编译工具链,C对应gcc,C++对应g++即可,具体路径根据第一篇博客安装交叉工具编译链的位置自行修改。
Ubuntu18.04交叉编译OpenCV3.4.9和QT5.12.2至ARM64位平台firefly-RK3399 (三)_第6张图片上两步配置完成后,点击构建套件,点击手动添加,按照箭头将上两步配置的ARM版本的qt及对应的ARM交叉编译工具链分别选中,如此便在QT Creator中搭建好了一个ARM版本的IDE,要注意的是在该环境下编译出来的程序在PC端是无法运行的,只能拷贝至开发板上运行,换言之只是借PC端的IDE编程及编译。

4.QT Creator中openCV的调用部署

在第三步中我们只是完成了arm版本QT的环境搭建,使得我们的QT Creator可以编写QT程序并编译出可以在开发板上运行的可执行文件,但此时程序还并不能调用openCV,要想能调用openCV还需要进行如下的配置,在QT Creator中新建一个project,打开对应的.pro文件如下:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
INCLUDEPATH += /home/wangrui/opencv3.4.9/install/include

LIBS += /home/wangrui/opencv3.4.9/install/lib/libopencv_highgui.so \
        /home/wangrui/opencv3.4.9/install/lib/libopencv_core.so \
        /home/wangrui/opencv3.4.9/install/lib/libopencv_imgcodecs.so.3.4.9 \
        /home/wangrui/opencv3.4.9/install/lib/libopencv_videoio.so.3.4 \
        /home/wangrui/opencv3.4.9/install/lib/libopencv_imgproc.so.3.4 \
       /home/wangrui/opencv3.4.9/install/lib/libopencv_video.so.3.4 \

在最下面将之前交叉编译的opencv添加进INCLUDEPATH和LIBS,具体的依赖库LIBS可以根据程序的需求不同自行选择添加,之后在cpp或者h中将其include进去就可以在程序中调用oepnCV的相关函数了。
Ubuntu18.04交叉编译OpenCV3.4.9和QT5.12.2至ARM64位平台firefly-RK3399 (三)_第7张图片至此openCV及qt的移植以及IDE的搭建就已经完全完成了,可以点击ui设计一个简单的Qlabel+Button的界面,利用opencv的capture读取摄像头的实时画面再在Qlabel上实时显示出来,如此便实现了openCV+qt在开发板上进行摄像头画面的实时显示,具体开发板上的运行画面如下:
Ubuntu18.04交叉编译OpenCV3.4.9和QT5.12.2至ARM64位平台firefly-RK3399 (三)_第8张图片后续可以根据需要在此基础上做一些功能的应用,如摄像头实时物体的分类、检测、分割异常检测等。

你可能感兴趣的:(嵌入式移植与开发,qt,linux,arm,交叉编译,opencv)