ARM-Linux 开发板下安装编译 OpenCV 和 Dlib

安装 OpenCV 和 Dlib 不像在 x86 平台下那样简单,用一句命令就可以自动安装完。而在 ARM 平台中许多软件都需要自行下载编译,且还有许多问题,本篇文章就是记录在 ARM 平台下载 OpenCV 踩过的坑。

硬件环境:

RK3568 + Ubuntu20.04。

安装 OpenCV

1、安装 OpenCV 需要的依赖库。

先添加源,以防安装 libjasper-dev 依赖包会有出现问题。

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo add-apt-repository "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe"sudo apt update

安装需要的依赖库。

sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config \libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev \libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev \libx264-dev libgtk-3-dev libtesseract-dev libopenblas-dev \liblapack-dev libatlas-base-dev gfortran libprotobuf-dev \protobuf-compiler libgoogle-glog-dev libgflags-dev libhdf5-dev \liblmdb-dev libsnappy-dev python3-dev python3-numpy python3-pip

修复软件包依赖问题。

sudo apt install -f

 如果在添加源后安装 libjasper-dev 包还是出现了问题,就在输入 apt install -f 后再重新安装。

2、下载源码

除了下载 OpenCV 源码,还需要下载 opencv_contrib 源码,里面提供了许多额外的功能和工具,用于扩展 OpenCV 库的功能。这个模块中包含了一些实验性质的特征、算法、工具和模块,这些功能通常不包含在核心的 OpenCV 库中。

OpenCV

opencv_contrib

OpenCV 和 opencv_contrib 源码的版本需要一致,不然可能会出现问题。如果需要在 Python 环境中使用 OpenCV,还需要看一下 Python 版本和 OpenCV 版本的对应关系。作者使用的 Python 版本是 3.8.9,下载的 OpenCV 和 opencv_contrib 的版本是 4.2.0,选择合适的版本下载。

3、编译安装

将 OpenCV 和 opencv_contrib 的源码拷贝到开发板中,任意位置都行,然后使用命令解压压缩包。

进入opencv-4.2.0 目录下,并且创建一个 build 目录,然后进去 build 目录下。

#配置编译选项
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/home/topeet/OpenCV/opencv_contrib-4.2.0/modules -D BUILD_opencv_python3=ON -D PYTHON3_EXECUTABLE=$(which python3) -D PYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -D PYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") -D WITH_GTK_2_X=ON -D WITH_OPENGL=ON ..#编译
​​​​​​​make -j$(nproc)#安装
make install

配置编译选项记得改一下 opencv_contrib  的路径。因为是在开发板上编译,所以过程有点久,然后就是编译过程中会出现编译失败,主要就是下面这两个问题,解决后重新编译即可。

安装 OpenCV 时提示缺少 boostdesc_bgm.i 文件的问题解决方案:

这个报错就是 opencv_contrib 中缺少一些文件,按照下面这位博主的方法解决。

安装OpenCV时提示缺少boostdesc_bgm.i文件的问题解决方案

安装 OpenCV 时提示缺少 test_detectors_regression.imp.hpp 文件的问题解决方案:

这个报错同样也是  opencv_contrib 中缺少一些文件,解决方法是:

opencv-4.2.0/modules/features2d/test/ 目录下面的 5 个文件

拷贝到 opencv_contrib-4.2.0/modules/xfeatures2d/test/ 目录下

test_descriptors_invariance.impl.hpp
test_descriptors_regression.impl.hpp
test_detectors_invariance.impl.hpp
test_detectors_regression.impl.hpp
test_invariance_utils.hpp

 同时,修改 opencv_contrib-4.2.0/modules/xfeatures2d/test/test_features2d.cpp 文件里头文件的路径。

#include "features2d/test/test_detectors_regression.impl.hpp"
#include "features2d/test/test_descriptors_regression.impl.hpp"

修改成下面这样。 

修改 opencv_contrib-4.2.0/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp 文件里头文件的路径。 

#include "features2d/test/test_detectors_invariance.impl.hpp"
#include "features2d/test/test_descriptors_invariance.impl.hpp"

修改成下面这样。 

 4、环境配置

输入以下命令进行环境配置。

#进入配置文件
sudo vim /etc/ld.so.conf#在配置文件末尾另起一行加上
/usr/local/lib#更新环境配置
sudo /sbin/ldconfig

安装 Dlib

1、安装 bootst 

sudo apt-get install libboost-all-dev

2、下载源码

从 GitHub 上下载 Dlib 源码,拷贝到开发板上进行解压。

3、编译安装

进入Dlib 目录下,并且创建一个 build 目录,然后进去 build 目录下。

#编译
sudo cmake .. -DDLIB_USE_CUDA=0 -DUSE_AVX_INSTRUCTIONS=1
cmake --build .#安装
cd ..  //返回上一级目录
sudo python setup.py install --no DLIB_USE_CUDA

4、测试

在 Python 环境下输入

import cv2
cv2.__version__

 输入 pip3 list 查看 Dlib 的版本。

好了,以上就是在 ARM 平台安装 OpenCV 和 Dlib 的过程,有任何建议和疑问欢迎在评论区中提出来嗷。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/283066.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【练习】双指针算法思想

🎥 个人主页:Dikz12🔥个人专栏:Java算法📕格言:那些在暗处执拗生长的花,终有一日会馥郁传香欢迎大家👍点赞✍评论⭐收藏 目录 1. 移动零 1.1 题目描述 1.2 讲解算法原理 1.3 编…

【Kafka系列】Kafka事务一般在什么场景下使用呢

面试官:听说你精通Kafka,那我就考考你吧 面试官:不用慌尽管说,错了也没关系😊。。。 以【面试官面试】的形式来分享技术,本期是《Kafka系列》,感兴趣就关注我吧❤️ 面试官:生产者重…

ideaSSM 学员信息管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 学员信息管理系统是一套完善的信息管理系统,结合SSM框架和bootstrap完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库&#xff…

现代游戏引擎架构

一、并行编程 1.1 为什么需要并行编程 游戏的渲染计算对算力要求很高,所以我们需要把操作系统的资源利用到极致。 但是摩尔定律已经不在适用了,硬件的发展目前已经达到瓶颈。所以我们需要通过数量来提高计算效率。 1.2 并行编程基础 进程与线程&#…

eclipse中使用PlantUML plugin查看对象关系

一.背景 公司安排的带徒弟任务,给徒弟讲了如何设计对象。他们的思维里面都是单表增删改查,我的脑海都是一个个对象,他们相互关系、各有特色本事。稳定的结构既能满足外部功能需求,又能在需求变更时以最小代价响应。最大程度的记录…

NIVision-相机图像采集

应用场景 上位机与工业相机通讯,控制相机抓取图像。 工业相机的通讯接口大多为USB口或网口。 USB口则直接将通讯线缆插入上位机USB端口,打开MAX中设备与接口一栏可以看到电脑给相机分配的资源名称;网口则需要将网线连接相机和上位机&#xf…

课时72:流程控制_for循环_嵌套循环

1.1.1 嵌套循环 学习目标 这一节,我们从 基础知识、简单实践、小结 三个方面来学习。 基础知识 简介 这里的嵌套实践,与选择语句的嵌套实践基本一致,只不过组合的方式发生了一些变化。常见的组合样式如下:for嵌套for语句for …

基于python+vue学生作业管理系统flask-django-nodejs-php

快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,然后线上管理系统也就相继涌现。与此同时,人们开始接受方便的生活方式…

docker 不同架构镜像融合问题解决

1、背景 docker 作为目前容器的标准之一,但是对于多种架构的平台的混合编译支撑不是很好。因此衍生了镜像融合,分别将多种不同的架构构建好,然后将镜像进行融合上传。拉取镜像的会根据当前系统的架构拉取不同的镜像,也可以通过 -…

【mysql 127错误】mysql启动报错mysqld.service: Failed with result ‘exit-code‘.

无网环境,mysql 安装 出现如下错误 [rootmysql tools]# systemctl status mysqld.service ● mysqld.service - MySQL ServerLoaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)Active: failed (Result: exit-code) since…

Jupyter R绘图 汉字显示乱码的解决办法

1.Jupyte中,R绘图,汉字显示乱码 2.如何解决? (1)R中安装showtext 登录linux服务器 #R > install.packages(“showtext”) … 出错 (2)退出R,安装freetype-config #apt install libfreetype6-dev 出错 (3)进入R&…

vi\vim编辑器详解

vi\vim编辑器介绍 vi\vim是visual interface的简称, 是Linux中最经典的文本编辑器 同图形化界面中的 文本编辑器一样,vi是命令行下对文本文件进行编辑的绝佳选择。 vim 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而…

Springboot+vue的四川美食分享网站+数据库+报告+免费远程调试

项目介绍: Springbootvue的四川美食分享网站。Javaee项目,springboot vue前后端分离项目 本文设计了一个基于Springbootvue的前后端分离的四川美食分享网站,采用M(model)V(view)C(controller&am…

无插件网页视频播放器,支持图像绘制(包含方格子、方框等),支持音视频播放、支持录像截图,提供源码下载

前言 本播放器内部采用jessibuca插件接口,支持录像、截图、音视频播放等功能。播放器播放基于ws流,图像绘制操作:1)支持绘制方格子,用于监控移动检测画框;2)支持绘制不透明方框,用于…

AI智能分析网关V4在非煤矿山安全生产视频智能监管场景中的应用

近年来,全国非煤矿山((含金属非金属矿山、尾矿库,以及矿泉水等其他矿山)安全生产工作取得明显成效,但安全基础仍然薄弱,事故总量仍然较大,重特大事故尚未得到根本遏制,安…

Maven发布开源框架到远程仓库

1.背景 当你写了一个自我感觉良好的开源工具希望给他人分享,如果只是在github等网站进行公布之外,用户使用起来还不是很方便,特别是当你提供是特定领域的基础工具。你还可以把它部署到中央仓库,这样别人使用就会方便很多。接下来…

【nginx】反向代理和负载均衡

文章目录 一、介绍二、好处三、反向代理和负载均衡3.1 nginx 反向代理的配置方式3.2 nginx 负载均衡的配置方式: 一、介绍 nginx 反向代理: 就是将前端发送的动态请求由 nginx 转发到后端服务器 二、好处 nginx 反向代理的好处: 提高访问速…

【CKA模拟题】如何发布一个SVC资源

题干 For this question, please set this context (In exam, diff cluster name) kubectl config use-context kubernetes-adminkubernetesYou have an existing Nginx pod named nginx-pod . Perform the following steps: Expose the nginx-pod internally within the cl…

python 函数(解包**、互相调用、作用域、函数的封装、内置函数:eval()、zip()、文件处理open())

函数解包 """ 1、函数的注释:参数和返回值 在注释里可以自动添加显示,只需手动加说明。2、函数的解包【拆包】:函数的参数要传递数据有多个值的时候,中间步骤拿到数据 保存在元组或者列表 或者字典里。 - 传递参数…

等高线图怎么生成3d模型---模大狮模型网

要将等高线图转换为3D模型,可以按照以下步骤进行操作: 准备等高线图: 首先,确保你有一张清晰的等高线图。等高线图显示了地形或物体在不同高度上的等高线,可以是数字化的图像文件或手绘的地图。 导入等高线图&#x…