嵌入式平台QT5+opencv4.5.1搭建(完整)

tips:该次移植过程是在华为Atlas 200dk上进行的,但针对各种嵌入式平台基本都试用,如树莓派,等等
在安装完图像界面以及qt之后,我们想通过qt调用opencv进行图像处理,对此,在改变文章中,我们介绍如何在Atlas 200dk移植opencv,在下篇文章中我们会在上面跑一个简单的开源项目,进行人脸识别,有兴趣的朋友可以去看看这篇文章。

一、前期准备

  • 下载opencv4.5.1源码包:
    官网下载地址:https://opencv.org/releases/
    也可到作者的资源出下载:https://download.csdn.net/download/sinat_33909696/18509418
  • 安装opencv相关依赖包:

sudo apt install  build-essential
 
sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev  
 
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

tips:在安装第三行的时候可能会出现无法定位软件包libjasper-dev的错误提示
这里分别说明一下x86系统和arm系统各自解决该问的方法:
x86: 我们可以直接添加以下仓库连接,然后进行重新安装:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt upgrade
sudo apt install libjasper1 libjasper-dev

arm: 因为上述为x86的软件源,因此针对arm版本来说,显然我们就需要找arm版本的源,但是作则找了好久也没有找到相关的源,于是选着了离线安装libjasper-dev软件包,如果有朋友发现了该软件源或更好的解决方法,希望可以在评论区留下你的解决,一起探讨探讨。
libjasper-dev软件包离线安装:
1 、进入Debian官网下载安装libjasper-dev
Debian官网:https://www.debian.org/
2、点击更多
在这里插入图片描述
3、点击软件包在这里插入图片描述
4、在搜索软件包目录,填写软件包名称,发行版选择any,section选择any,然后点击搜索:
在这里插入图片描述
5、选着armhf版本进行下载在这里插入图片描述
6、输入sudo dpkg -i libjasper-dev_1.900.1-debian1-2.4+deb8u6_armhf.deb指令安装deb包,安装过程可能会出现缺少依赖:libjasper1,所以我们再按照以上步骤先去下载安装libjasper1,再安装libjasper-dev,如果安装libjasper1还是提示需要依赖,那就再重复以上步骤下载安装需要的依赖,直到安装成功。
7、使用dpkg进行安装不自动处理安装依赖包,我们可以通过 sudo apt-get install -f 来安装依赖,(当然我还是建议大家自己离线安装,这样可以保证一定能安装成功)
8、其次安装deb软件包,我们还可以使用apt命令进行deb软件包的安装,apt相比于dpkg来说好处就是可以自动处理依赖包的安装:
输入:apt-get install -y ./libjasper-dev_1.900.1-debian1-2.4+deb8u6_armhf.deb来进行安装安装deb安装包
tips:这里要注意的是不要直接在 apt 命令后指定deb包的名字,必须有路径信息,否则 apt 命令会尝试从远程仓库中搜索deb包同名的package,从而导致安装失败。
9、上述手动安装libjasper-dev库会提示缺失好几个依赖包,如果嫌麻烦的可以直接去我的资源中下载libjasper-dev和其完整依赖:资源连接:https://download.csdn.net/download/sinat_33909696/18510530
10、如果上述安装libjasper-dev库失败:请开启32位兼容,在重复上面安装过程:
开启指令:

dpkg --add-architecture armhf
apt-get update
apt-get install libc6:armhf

二、编译以及安装opencv

  • 上述依赖安装完成后就可以就可以进行编译了,解压OpenCV-4.1.0源码包,进入文件夹,创建一个名为build的文件夹:进入该文件夹:输入以下命令进行cmake的配置:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

如果报错,那么去掉 -D后面的空格再尝试一下,即

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..

这之中 , /usr/local 是 OpenCV 的安装路径

  • cmake配置好之后,输入以下名进行编译
 sudo make

也可以使用多线程进行编译

 sudo make -j 12

j 后面的数字是你想要使用的线程数量

开始编译后

安装上述过程安装完相关依赖包之后进行编译,一半都不会出错:但读者在编译的时候由于使用了 -j 12,即12核进行编译,编译过程中报了一个错:

在这里插入图片描述
这是应为我在Atlas 200dk上进行编译的,超出了内存:
解决方法:
1、直接make或者-j后面数字不要加太大即可
2、其次,我们还可以通过增加交换分区来解决内存不够的情况:

sudo dd if=/dev/zero of=/swapfile bs=64M count=16
#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=1024MB
sudo mkswap /swapfile
#把刚才空间格式化成swap格式
sudo swapon /swapfile
#使用刚才创建的swap空间

然后在重新make即可

  • 等待编译结束,键入如下命令进行安装
sudo make install 

因为上面我们指定了安装路径为、/usr/local,因此,相应的lib库以及ingclude头文件会被放在/usr/local下。

  • 至此。opencv安装完成。
  • 如果实在没编译成功,也可以下载作者编译好的opencv4.5.1,然后安装,继续下面步骤:下载地址:https://download.csdn.net/download/sinat_33909696/18510164

三、配置opencv环境

  • 首先将OpenCV的库添加到路径,从而可以让系统找到
  • 键入如下命令打开opencv.conf ,打开后很可能是空白
sudo vim /etc/ld.so.conf.d/opencv.conf

在文末添加
/usr/local/lib
保存后,执行如下命令使得刚才的配置路径生效
sudo ldconfig

  • 接下来配置 bash
sudo gedit /etc/bash.bashrc 

在文件最末尾添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig  
export PKG_CONFIG_PATH 

保存,执行如下命令使得配置生效

source /etc/bash.bashrc  

然后更新

sudo updatedb 

到这里配置就完成了

四、qt中opencv4.5.1配置

  • 在开始前,我们还需要做一步准备工作,进入安装opencv的目录:/usr/local/include我们可以看到该文件夹下面有一个opencv4的目录,进入opencv4的目录我们可以发现里面有一个opencv2的目录,进入opencv2的目录我们可以看到,该目录下才存放着我们需要的头文件,但是我们在调用的时候一半都是这样引入头文件的<opencv2/xxx>,因此,而我们的头文件目录又是/usr/local/include,因此,由于中间多了一个opencv4的文件夹而造成找不到头文件的错误,对此,我们需要将opencv4目录下的文件夹opencv2文件夹移出来一级,使其和opencv4文件夹在同一级目录才可以,键入如下命令进行拷贝一份:cp opencv2 .. -rf,移完之后include文件夹下文件如下:
    在这里插入图片描述

  • 然后建立一个qt控制台项目,在pro配置文件中加入opencv的头文件以及lib库文件:

INCLUDEPATH += /usr/local/include
LIBS += /usr/local/lib/libopencv_*.so

在这里插入图片描述

  • 写一个简单的测试代码:
#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{

    Mat src = imread("/home/HwHiAiUser/Desktop/1.jpg");
    imshow("sa",src);
    waitKey(0);
    return 0;
}

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思禾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值