树莓派3B/4B编译安装opencv4.4.0

手上有两块树莓派,3b和4b,都给装上了opencv4.4.0,其中3b没有装contrib,而4b装了,难度不大,但整体过程还是很浪费时间,因此做点记录,由于耗时比较长,一些失败没来得及做记录,只记录了最后成功的一些指令。
这是我用的安装包
opencv4.4.0下载地址:https://pan.baidu.com/s/1t-wv_q3pob0CL4ID9I-0Ew 提取码:jsin
contrib下载地址:https://pan.baidu.com/s/1tDePnCIiKpLWUATx-vS4wg 提取码:tuom

1、备份原源文件以及查看源版本

在树莓派命令行界面输入以下命令备份源文件

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp/etc/apt/sources.list.d/raspi.list/etc/apt/sources.list.d/raspi.list.bak

树莓派系统是是基于debian改造出来的, 具体型号可以通过终端输入:lsb_release -a 命令来查看自己的系统到底是 jessiestrerch 还是 buster。而对应的,只需要将下面换源的命令中相应的地方进行修改即可,一般是 buster。

2、换源

(这个源是我用过最舒服的,至少是对于本次安装而言,用的最顺手的,感谢博客
打开/etc/apt/sources.list

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi

打开/etc/apt/sources.list.d/raspi.list这个也得改!!!

deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ buster main ui

更新源sudo apt-get update
更新软件sudo apt-get upgrade(时间可能久点,但很重要!!!一定要更新,不然opencv的依赖库安装会出现各种问题)

3.安装依赖库

sudo apt-get install build-essential cmake git pkg-config
sudo apt-get install libjpeg8-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libjasper-dev
sudo apt-get install libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran     
sudo apt-get install libopencv-dev

4.编译opencv

4.1树莓派3b

在opencv4.4.0目录下新建build目录,并进入build底下

sudo cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DCMAKE_INSTALL_PREFIX=/usr/local ..
sudo make

编译时间较长,我花了一整个下午,cmake编译的选项可以自己根据需要挑选,之前尝试过打开其他选项,但编译时偶尔会出现下面的报错,但继续make仍然能继续编译,只不过到后面会出现死机,得强行断电,可能是3b性能不行,但后来使用上面的cmake,还是蛮顺利就编译通过了。
在这里插入图片描述

4.2树莓派4b

4.2.1扩容(非必要)

手上的树莓派4b性能还算好点,8G内存,比3b厉害不少,所以像模像样地根据他人教程给它扩容内存,树莓派默认内存只有100M,将其改为2048

sudo nano /etc/dphys-swapfile

在这里插入图片描述
重启dphys-swapfile服务,sudo /etc/init.d/dphys-swapfile restart

在这里插入图片描述

4.2.2 编译

同理,在opencv4.4.0目录下新建build目录,并进入build底下

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/home/pi/work/opencv/opencv_contrib/modules -D BUILD_EXAMPLES=ON -DCMAKE_SHARED_LINKER_FLAGS='-latomic' -D WITH_LIBV4L=ON PYTHON3_EXECUTABLE=/usr/bin/python3.7 PYTHON_INCLUDE_DIR=/usr/include/python3.7 PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so PYTHON3_NUMPY_INCLUDE_DIRS=/home/pi/.local/lib/python3.7/site-packages/numpy/core/include 

如果不需要装contrib包的话,cmake指令与3b的相同

4.2.3 可能遇到的问题:

主要是由于opencv_contrib引起的,不装contrib包的应该不会遇到

  1. fatal error: boostdesc_bgm.i: No such file or directory
    #include “boostdesc_bgm.i”
    在这里插入图片描述
    解决方法,下载对应的文件,并复制到/opencv_contrib/modules/xfeatures2d/src/底下
    在这里插入图片描述

  2. fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory
    #include “features2d/test/test_detectors_regression.impl.hpp”
    在这里插入图片描述
    将opencv4.4.0底下的opencv-4.4.0/modules/features2d/文件夹直接复制到build文件夹底下,之后重新编译即可

参考博客

【测评】树莓派3B和4B的SoC性能比较。系统自查、工具跑分
树莓派3b+安装OpenCV成功的一些经验分享
修改树莓派系统的虚拟内存大小(SWAP)
编译OpenCV以及openc_contrib提示缺少boostdesc_bgm.i文件出错的解决

附:交叉编译(尚未成功)

交叉编译也是不错的选择,毕竟树莓派安装opencv4.4.0确实慢。安装树莓派的交叉编译工具在主机上编译,但我没成功,如果之后成功了,会进行更新

下载交叉编译工具:https://github.com/raspberrypi/tools
在/.bashrc文件中加入gcc交叉工具链环境变量。
sudo gedit ~/.bashrc
在该文件最后加入交叉工具链所在目录。

【64位系统】export PATH=$PATH:/home/chen/work/raspberrypi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

source ~/.bashrc
arm-linux-gnueabihf-gcc -v(成功的话能看编译器版本信息)
编译
sudo cmake-gui(配置编译器,见下图)
sudo make -j4

在这里插入图片描述
在这里插入图片描述

可能遇到的问题(有待解决)
1、error: operator ‘&&’ has no right operand
在这里插入图片描述
解决方法:cmake-gui时去掉with tiff

2、error: #error “No suitable threading library available.”
在这里插入图片描述
打开/3rdparty/protobuf/src/google/protobuf/stubs/common.cc,并在前面添加#define HAVE_PTHREAD即可

3、未解决,放弃了
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值