树莓派4 安装OPENCV3全过程(各种踩坑和报错)

树莓派4 安装OPENCV3全过程(各种踩坑和报错)

    • 说明
    • 第一步更换源
    • 第二部:存储空间的一些说明和操作
    • 第三步:增加交换空间
    • 第四步:下载工具及包
    • 第五步:设置编译编译参数
    • 第六步:开始编译
    • 第六步:收尾

说明

对于新手来说,安装一个opencv太头疼了,在网上试了许许多多的教程,对于树莓派4来说有些已经过时了,很多教程都是树莓派3的,踩了很多坑才终于给树莓派安装上了opencv,每次编译几个小时,最后出错真的令人抓狂,所以我决定写一个记录来,让朋友们不要像我一样浪费时间折腾好几个小时

本人也是才入门的小白,不对的地方请各位指正。

##创建时间: 2019年9月29日
###作者: 创新实验室——GL
##版本: v1.0
##上次修改时间: 无
##联系作者: 无
##验证平台: 树莓派4 (操作系统为Raspberry)(存储卡为32G)

第一步更换源

第一步先更换源,更新下载更快;
①在终端输入以下指令

 sudo nano /etc/apt/sources.list

用#注释掉原文件内容,用以下内容取代:

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

这里我用的是是清华源,在后面若下载出错换中科大源试试(Ps:中科大的源地址http://mirrors.ustc.edu.cn/raspbian/raspbian/
对应替换就行)

注意:网上很多是 stretch ,这是以前的版本 , 现在已经改成 buster了,之前博主就是因为这个无限黑屏。
所以如果你的树莓派版本较新的话就用我这个代码就行,老版本的自行备份测试。
如图:图1
然后ctrl+o保存,点回车确认保存,然后ctrl+x退出

②在终端输入以下指令**

 sudo nano /etc/apt/sources.list.d/raspi.list

用#注释掉原文件内容,用以下内容取代:

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

如图:
树莓派4 安装OPENCV3全过程(各种踩坑和报错)_第1张图片
然后ctrl+o保存,点回车确认保存,然后ctrl+x退出

③使用命令更新软件源列表,同时检查编辑是否正确。再更新软件

 sudo apt-get update
 sudo apt-get upgrade

第二部:存储空间的一些说明和操作

必须使用16G以上的卡,最好是class10以上,实测8G class6卡安装到35%就爆满了,推算安装完成要4.6G左右。
然后扩大文件系统。因为,用SD卡安装完系统后一大部分空间实际是未被分配的
使用命令

sudo raspi-config

然后选择第七个
树莓派4 安装OPENCV3全过程(各种踩坑和报错)_第2张图片
然后选择第一个回车,会让你重启树莓派,选择立即重启
树莓派4 安装OPENCV3全过程(各种踩坑和报错)_第3张图片

第三步:增加交换空间

增加交换空间以避免因内存问题导致的编译挂起
输入命令

sudo nano /etc/dphys-swapfile

将 CONF_SWAPSIZE 值从默认值更改 100 为 1024 :
如图
树莓派4 安装OPENCV3全过程(各种踩坑和报错)_第4张图片
然后ctrl+o保存,点回车确认保存,然后ctrl+x退出,并运行以下命令以使更改生效:

sudo /etc/init.d/dphys-swapfile restart

第四步:下载工具及包

①安装OpenCV的相关工具

sudo apt install build-essential cmake git pkg-config libgtk-3-dev libcanberra-gtk*
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
sudo apt install libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev opencl-headers
sudo apt install python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev

PS:如果出现(无法定位软件包)啥的,换个源更新一下试试,建议试试中科大的源,更新快。因为软件一直在更新,不知道此刻以后会出现什么奇奇怪怪的版本,具体怎么怎么换上面也写了,只是网站不一样,百度一大堆

②创建一个新目录并从 Github 克隆 OpenCV 和 OpenCV contrib 存储库:

mkdir ~/opencv_build && cd ~/opencv_build
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

因为Github服务器不在国内,并且不支持断点续传,偶尔抽风很正常,克隆失败多半就是克隆过程中抽风了,多试几次,实在不行就自己上墙,下载好了再拷贝到树莓派上,别再私信我这种问题哥哥们,百度!百度!百度!百度不了就谷歌一下

在撰写本文时, GitHub 存储库中的默认版本是 4.1.1 版。如果你想安装 OpenCV 的旧版本,导航既 opencv 和 opencv_contrib 目录,并运行 git checkout

克隆存储库后,创建一个临时构建目录,然后切换到该目录:

mkdir -p ~/opencv_build/opencv/build
cd ~/opencv_build/opencv/build

第五步:设置编译编译参数

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
    -D ENABLE_NEON=ON \
    -D ENABLE_VFPV3=ON \
    -D BUILD_TESTS=OFF \
    -D OPENCV_ENABLE_NONFREE=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \
    -D BUILD_EXAMPLES=OFF ..

“\” 代表将代码延续到下一行
输出结果如下所示:

...
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv_build/opencv/build

第六步:开始编译

运行

make -j4

这个过程大概需要两三个小时,耐心等到,不要用树莓派做其他事
编译结束了会出现下面这个结果

...
[100%] Linking CXX shared module ../../lib/python3/cv2.cpython-35m-arm-linux-gnueabihf.so
[100%] Built target opencv_python3

如果编译在某些时候失败,由于资源不可用,请 make 再次运行该命令,该过程将从停止的位置继续。

成功后安装已编译的 OpenCV 文件:

sudo make install

时间很快,结果如下

...
-- Installing: /usr/local/bin/opencv_version
-- Set runtime path of "/usr/local/bin/opencv_version" to "/usr/local/lib"

最后检查opencv安装成功与否

C++库:

pkg-config --modversion opencv4

结果

4.1.1

Python库:

python3 -c "import cv2; print(cv2.__version__)"

结果

4.1.1-pre

大功告成!!!!!

第六步:收尾

如果 SD 卡上没有足够的可用空间,请删除源文件:

rm -rf ~/opencv_build

大量交换使用可能会损坏您的 SD 卡。将交换空间更改回原始大小:

sudo nano /etc/dphys-swapfile

将 CONF_SWAPSIZE 值改回 100

保存文件并激活更改:

sudo /etc/init.d/dphys-swapfile restart

开始使用opencv吧!

你可能感兴趣的:(笔记)