笔者在2019年双十一入手了树莓派4b,当然我自己也是新手,想在计算机视觉做点东西时,但在安装OpenCV上面却爬了不少坑,因此特地总结了一下,希望能帮助那些利用树莓派4b+OpenCV 4.1.1的maker。前面的准备内容可以跳过,主要针对新手,网上挺多教程的。
笔记本(笔者没买专用的显示屏)、网线(SSH连接)
树莓派4b(4G内存版本)、32G的tf卡(安装系统)、树莓派的电源适配器(5V、3A)
我们这里假设tf卡是一张空白的内存卡。介绍这些步骤,是因为我当时经常出问题,有时候没别的办法,就只能重装系统。
我用的是买树莓派时卖家给的软件SD Formatter 4.0。格式化完成后,存储大小就会由256M变成正常大小。
我用的是买树莓派时卖家给的软件Win32DiskImager-0.9.5-binary。导入系统镜像,再点击write。这个系统镜像在国内从官网上下载非常慢,还容易失败。图中版本的系统的百度云
链接:https://pan.baidu.com/s/1pW4xZg6PpCMdi1RShBIBhw
提取码:chfs
进行SSH连接时,要么建立SSH文件夹,要么建立SSH文本文档,不过需要将.txt后缀去掉
相当于就是笔记本与树莓派通过网线连接。笔记本连接WiFi,更改无线网络设置(可以百度一下),使笔记本无线网络与树莓派进行网络共享。
首先IP扫描。这个Advanced IP Scanner软件比在cmd中的敲arp -a命令好用。
然后,用putty连接。将IP地址输入进去点击下面Open即可。进入之后,输入登陆用户名pi,密码raspberry
进入配置界面
sudo raspi-config
进入第4项 Location options
然后,选择第1项
将显示语言设置为中文。需要注意的是,按下空格键,出现括号里面出现"星",才算被选中。然后回车,选择zh_CN.UTF-8那一项。
进入第5项Interfacing Options,打开摄像头、SSH、VNC(这三个必须的)等。即每项进入后,进行使能enable,确认
进入第7项Advanced Options
然后再进入第5项Resolution ,如果不设置这一项,VNC不显示桌面。我选的是85那个,网上说,只要不是第一个就行。
接着,扩展一下容量。进入第7项Advanced Options,再进入第1项
查看容量可用df -h命令。
接着输入如下命令进行重启。
sudo reboot
笔者用过16Gtf卡,结果编译到81%时,tf卡空间不足了。
32Gtf卡安装opencv完成后,仅剩13.5G。
VNC桌面,有时候点文件管理的时候,文件管理对话框可能闪退,解决办法如下:
sudo apt-get install --reinstall pcmanfm
不修改的话,可能后面会编译到一半闪退,查看虚拟内存
free
sudo nano /etc/dphys-swapfile
更改虚拟内存,将100改成2048,如下图所示。记得Ctrl+O ,Enter,Ctrl+X
重启相关服务
sudo service dphys-swapfile restart
查看摄像头启动成功没
vcgencmd get_camera
本小节参考的博客
链接:https://blog.csdn.net/zqxdsy/article/details/102574239
不换源的话,直接使用官网源,下载速度真的慢,还不一定下得全,会导致各种出错。
首先,更换软件源
sudo nano /etc/apt/sources.list
将原来的地址用“#”注释掉,换成清华源(也可以换成其他源,比如中科大源),用下面内容替代。接着Ctrl+O,回车, Ctrl+X退出
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
sudo nano /etc/apt/sources.list.d/raspi.list
用#注释掉原文件内容,用以下内容取代,然后Ctrl+O回车 Ctrl+X:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
sudo apt-get update
sudo apt-get upgrade
过程中需要有的地方需要按y,按下y即可;还有的地方需要press q就按下q好了
sudo pip3 install numpy
sudo apt-get install build-essential cmake git pkg-config -y
sudo apt-get install libjpeg8-dev -y
sudo apt-get install libtiff5-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libpng12-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y(注意最后一个包的数字“4”后面是“L”)
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y
注意:如果每一条命令执行完后,如果出现未完成情况,就重新执行一次,否则到了后面编译步骤,会因为依赖包未下载完整而出错
下载两个压缩包到树莓派的/home/pi/Downloads目录下,有以下几种方法:
(我用的方法三,两个压缩包的百度网盘
链接:https://pan.baidu.com/s/1SqHJwRkKqoRsmDP-gZ9hEg
提取码:3swp)
1)法一:
cd /home/pi/Downloads
wget https://github.com/Itseez/opencv/archive/3.4.0.zip
wget https://github.com/Itseez/opencv_contrib/archive/3.4.0.zip
下载之后,把第一个压缩包重新命名为opencv-3.4.0.zip,把第二个压缩包重新命名为opencv_contrib-3.4.0.zip
2)法二:Vnc进去运行:(用git工具clone到所需目录可能出错)
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
3)法三:直接访问网址
https://github.com/Itseez/opencv/archive/4.1.1.zip
https://github.com/Itseez/opencv_contrib/archive/4.1.1.zip
4)法四:
访问https://opencv.org/releases/ 从github下载,这个网址可以知道最新版本
5)法五:
使用Xftp 6 连接树莓派,用户就是IP地址,把压缩包拖到树莓派的/home/pi/Downloads目录下,这个方法最简单,便捷。
Xftp 6 下载网址:
https://www.netsarang.com/zh/downloading/?token=MHlpUm9TTnVISDRmZzJrTW1XN2U1d0BvTWZkSlIzY3dMUnFrcERIR0ZVdHpR
因为我用的法三,利用软件File Zilla,在右侧树莓派home/pi目录下创建Downloads文件夹并打开,将左侧笔记本上两个压缩包传输到home/pi/Downloads目录下
cd /home/pi/Downloads
unzip opencv-4.1.1.zip
unzip opencv_contrib-4.1.1.zip
cd /home/pi/Downloads/opencv-4.1.1
mkdir build
cd build
注意:检查所有PATH路径是否在你本地存在,以下是我的树莓派的路径
注意,下面这是一行命令(包括最后那俩点儿),需要耐心等待十五分钟左右
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/Downloads/opencv_contrib-4.1.1/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 ..
cd /home/pi/Downloads/opencv-4.1.1/build
make
注意:保证树莓派有至少5G的存储空间,建议本命令用树莓派桌面上的命令行工具运行,而不要使用无线远程ssh连接。因为执行命令时间太长,中途如果ssh断线的话无法得知是否已经安装完毕。
注意:静待五个小时的编译。注意,在此期间,树莓派要供电充足,不要运行其它任务,以免因为内存不够什么的幺蛾子报错。
有的错误是因为前面你的网速或者其他原因导致在步骤2.4中sudo apt-get upgrade更新不完整,也有可能是步骤2.6中,有些依赖包未下载完整
解决办法:重新回到步骤2.4,再进行一次
我遇到的这几个报错的解决办法是参考链接博客:https://blog.csdn.net/qq_43762614/article/details/102760414
解决办法:将以下百度网盘里的文件复制到/home/pi/Downloads/opencv_contrib-4.1.1/modules/xfeatures2d/src 路径
链接:https://pan.baidu.com/s/1m1K272GEzC89z61RWltLLA
提取码:kqkq
接着继续
make
opencv_contrib-4.1.1某个cpp类型文件中缺少头文件,在该文件夹找不到
解决办法:
第一步,在VNC文件管理中/home/pi/Downloads/opencv-4.1.1/modules/features2d/test路径下,下面两个文件进行复制
第二步,将上面两个文件粘贴到/home/pi/Downloads/opencv_contrib-4.1.1/modules/xfeatures2d/test路径下
第三步,打开下面这个文件
第四步,将头文件引用改成下图所示
接着继续
make
也是头文件缺失
解决办法:同样的步骤
第一步,复制
第二步,粘贴
第三步,打开下面文件
第四步,修改头文件引用
接着继续
make
解决办法:同样的操作
第一步,复制
第二步,粘贴
第三步,打开下面文件
第四步,添加头文件引用(前面是修改,这个是需要添加)
cd /home/pi/Downloads/opencv-4.1.1/build
sudo make install
cd ~
python3
import cv2
结语:好了,安装过程就到这里了,反正遇到问题,多思考,多查资料,现在网络这么发达,总能找到解决办法的,感谢各位大佬的帮助