树莓派3B/4B编译安装opencv4.4.0"/>
树莓派3B/4B编译安装opencv4.4.0
手上有两块树莓派,3b和4b,都给装上了opencv4.4.0,其中3b没有装contrib,而4b装了,难度不大,但整体过程还是很浪费时间,因此做点记录,由于耗时比较长,一些失败没来得及做记录,只记录了最后成功的一些指令。
这是我用的安装包
opencv4.4.0下载地址: 提取码:jsin
contrib下载地址: 提取码: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
命令来查看自己的系统到底是jessie
、strerch
还是buster
。而对应的,只需要将下面换源的命令中相应的地方进行修改即可,一般是 buster。
2、换源
(这个源是我用过最舒服的,至少是对于本次安装而言,用的最顺手的,感谢博客)
打开/etc/apt/sources.list
deb / buster main contrib non-free rpi
打开/etc/apt/sources.list.d/raspi.list
这个也得改!!!
deb .raspberrypi/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包的应该不会遇到
-
fatal error: boostdesc_bgm.i: No such file or directory
#include “boostdesc_bgm.i”
解决方法,下载对应的文件,并复制到/opencv_contrib/modules/xfeatures2d/src/底下
-
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确实慢。安装树莓派的交叉编译工具在主机上编译,但我没成功,如果之后成功了,会进行更新
下载交叉编译工具:
在/.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,并在前面添加#define HAVE_PTHREAD即可
3、未解决,放弃了
更多推荐
树莓派3B/4B编译安装opencv4.4.0
发布评论