最新树莓派系统opencv3的安装
近期把吃灰的树莓派3B找了出来,想在上面运行opencv3,安装编译的过程当中走了不少弯路,参考网上众多大佬的笔记,发现要么不齐全,要么教程老旧,不适用于新版系统,故写下这篇博文以供你们参考,但愿能帮助你们少走弯路。python
1、配置树莓派
系统安装和配置
关于树莓派系统的安装和初期配置网上教程不少,这里再也不赘述。
本文配置环境为:
git
- 树莓派3B
- 系统Raspberry Pi OS(2020-05-27)
- 32G储存卡
更换更新源和下载源
sudo nano /etc/apt/sources.list
在第一行前输入 # 注释系统默认源
在最后一行输入如下代码更换为中科大镜像
github
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
按ctrl+x进行保存退出bash
更换pip下载源
命令行输入:网络
sudo mkdir ~/.pip cd .pip sudo nano pip.conf
在打开的文件中输入如下代码ssh
[global] timeout = 10 index-url = http://mirrors.aliyun.com/pypi/simple/ extra-index-url= http://pypi.douban.com/simple/ [install] trusted-host= mirrors.aliyun.com pypi.douban.com
按下ctrl+x保存退出函数
更新软件系统
sudo apt-get update sudo apt-get upgrade
扩展根目录空间
在控制终端输入工具
sudo raspi-config
经过键盘上下键控制,选择7.Advanced Options进入,而后选择Expand Filesystem,将根目录扩展到整个SD卡,充分利用SD卡的存储空间。若是不进行这一步,后续命令会出现卡死。
设置完成后退出设置界面,重启树莓派。
优化
sudo reboot
设置SWAP
OpenCV安装编译过程当中数据吞吐较大,为了防止系统卡死,须要设置合适的交换空间。ui
sudo nano /etc/dphys-swapfile
将 CONF_SWAPSIZE 的值修改为你想要的大小。 通常在内存小于2G的状况下,交换分区应为内存的2倍!
而后,从新启动 dphys-swapfile 文件服务:
sudo /etc/init.d/dphys-swapfile restart
输入free -h
查看是否设置成功
2、安装运行在python2上的OpenCV
打开终端,输入如下两个命令便可完成安装(第一条可能要花半小时左右完成)
sudo apt-get install libopencv-dev sudo apt-get install python-opencv
安装完成,输入cv2.__version__
便可查看OpenCV版本号
3、安装python3下的OpenCV
一、安装Python科学计算库numpy
sudo pip3 install numpy
二、安装OpenCV所需的库
// 安装build-essential、cmake、git和pkg-config(cmake开发人员工具) sudo apt-get install build-essential git cmake 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 //GTk2.0安装 sudo apt-get install libgtk2.0-dev -y //安装OpenCV数值优化函数包 sudo apt-get install libatlas-base-dev gfortran -y
3.下载opencv3.4.3和opencv_contrib3.4.3包
为了方便后期管理,咱们把文件下载安装到Downloads文件夹
cd Downloads
而后利用wget命令从网络下载opencv3.4.3和opencv_contrib3.4.3
wget -O opencv-3.4.3.zip https://github.com/Itseez/opencv/archive/3.4.3.zip wget -O opencv_contrib-3.4.3.zip https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip
解压这两个文件
unzip opencv-3.4.3.zip unzip opencv_contrib-3.4.3.zip
4.设置CMAKE编译参数
为了正确编译OpenCV,须要对cmake参数进行设置。
①在opencv-3.4.3文件夹下建立build文件夹以存放编译临时文件
cd ~/Downloads/opencv-3.4.3 mkdir build cd build
②设置cmake编译参数
//下述参数中,INSTALL_PYTHON_EXAMPLES、INSTALL_CXX_EXAMPLES、BUILD_EXAMPLES分别是安装python例程、安装C例程以及编译例程,这三个能够不加,这样编译速度快一点,根据须要自行选择。 sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv_contrib-3.4.3/modules \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D INSTALL_CXX_EXAMPLES=ON \ -D BUILD_EXAMPLES=ON ..
③配置成功的界面以下图所示
5.备份build文件夹
下一步咱们会利用build文件夹里的文件进行make,一旦失败还须要从新进行cmake参数设置。为了节省时间,对build文件夹进行备份。
cd .. cp -r build ./build1
6.编译OpenCV3
进入build文件夹进行编译,这一步耗时较长(大约四五个小时)。建议在树莓派环境下进行,防止ssh断开致使编译失败。同时树莓派要保证供电充足,且最好不要进行其余操做。
cd ~/Downloads/opencv-3.4.3/build //使用最多4线程编译,加快编译速度。同时保存编译信息到make.log,方便离线查看编译进度 sudo make -j4 2>&1 | tee make.log
若是看到进度编译到100%,那么说明编译安装成功。
若是遇到中途出错或者临时断电等问题,直接输入以上命令继续编译便可。若是想从新进行编译,能够把路径跳转到咱们上面备份的build1文件夹进行编译,也能够输入如下命令从新编译
make clean sudo make -j4 2>&1 | tee make.log
7.安装OpenCV3
编译完成后便可进行最后一步——安装。
//安装OpenCV3 sudo make install //安装动态连接库 sudo ldconfig
8.恢复SWAP空间
安装完成后须要把swap恢复系统默认,而后从新启动服务。不然大量的数据交换会致使内存卡损坏。
sudo nano /etc/dphys-swapfile CONF_SWAPSIZE = 100 sudo /etc/init.d/dphys-swapfile restart
4、配置OpenCV
1.配置opencv.conf
为了保证个别语言的编译要求,须要对opencv.conf文件进行配置
sudo nano /etc/ld.so.conf.d/opencv.conf
在打开的文件最后两行键入如下内容
//其中,/usr/local为默认安装路径,根据实际状况进行修改便可 /usr/local/lib ?
更新动态连接
sudo ldconfig
2.修改bash.bashrc 配置文件
//打开bash.bashrc sudo nano /etc/bash.bashrc //最后两行加入如下代码 PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH //重启树莓派 sudo reboot
3.检查是否安装完成
python3
import cv2
cv2.__version__
若是出现如图所示的结果,则说明安装成功
也能够经过运行如下代码生成一个图像来检测OpenCV是否工做正常
touch test.py nano test.py import cv2 import numpy as np cv2.namedWindow("gray") img = np.zeros((512,512),np.uint8)#生成一张空的灰度图像 cv2.line(img,(0,0),(511,511),255,5)#绘制一条白色直线 cv2.imshow("gray",img)#显示图像 #循环等待,按q键退出 while True: key=cv2.waitKey(1) if key==ord("q"): break cv2.destoryWindow("gray") python3 test.py
最终的结果应该是生成一个空的灰度图像,图像中间有一条白色直线。以下图所示
搞定!ENJOY!!
5、编译中可能会出现的问题(没出现忽略)
一、编译过程当中可能会报错**:fctal error: ImfChromaticities.h: 没有那个文件或目录。**
输入如下代码能够解决
sudo apt-get install libopenexr-dev
2.编译18%左右可能会报错fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录。
这是因为咱们以前安装了python2环境下的opencv致使的,复制两个文件便可解决:
将/home/pi/Downloads/opencv_contrib-3.4.3/modules/xfeatures2d/include/opencv2目录下的xfeatures2d文件夹和xfeatures2d.hpp文件复制粘贴到/home/pi/Downloads/opencv-3.4.3/modules/stitching/include/opencv2目录下便可
文件也能够从连接中下载,而后拷贝进正确的路径便可:连接:https://share.weiyun.com/tMPeaqGP 密码:ye4ezy
3.在编译到81%左右的时候,可能会报错Built target opencv_tracking [Makefile:163 : all] 错误2(或者其余相似的错误)
这主要是由于下载的包不完整致使的,把缺乏的文件拷贝到:home/pi/Downloads/opencv_contrib-3.4.3/modules/xfeatures2d/src/下便可
缺乏的文件为:
- boostdesc_bgm.i
- boostdesc_bgm_bi.i
- boostdesc_bgm_hd.i
- boostdesc_binboost_064.i
- …
缺失文件下载连接:https://share.weiyun.com/6gaKPUXf 密码:c6myk6
本文最终安装的OpenCV版本为OpenCV3.4.3。
如需安装最新的OpenCV4,可参考博文:https://blog.csdn.net/weixin_43287964/article/details/101696036
本人尝试在树莓派上安装OpenCV3.4.3的过程当中遇到了好多坑,参考网上众多大佬的笔记后前先后后尝试了四五天才完成,很是感谢各位大佬的帮助。为了让和我同样刚刚接触OpenCV的你能顺利的安装opencv,故写下这篇博客,此篇博客中如有错误,欢迎你们指正交流!!!
码字不易,如需转载请注明出处,谢谢!!!