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

编程入门 行业动态 更新时间:2024-10-18 00:28:50

<a href=https://www.elefans.com/category/jswz/34/1769672.html style=树莓派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 命令来查看自己的系统到底是 jessiestrerch 还是 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包的应该不会遇到

  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确实慢。安装树莓派的交叉编译工具在主机上编译,但我没成功,如果之后成功了,会进行更新

下载交叉编译工具:
在/.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

本文发布于:2024-02-11 19:54:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1683067.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:树莓派

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!