前言:最近因为毕设在树莓派上使用Opencv,因此花了两天时间分别装了opencv-3.4.0版本、opencv-4.0.0版本,期间遇到了各种坑(我感觉遇到了安装过程几乎所有的坑了T T),但最后在网上查找相关问题都一步步解决了,写下这篇博客就是总结一下自己的安装经历以及遇到的坑,以后再次安装就可以直接看自己的博客了哈哈!同时也是希望能够系统的总结一下遇到的坑,可以不用遇到一个问题就去查一次百度。最后希望能够帮助到想用树莓派安装opencv的你!
我在安装过程中记录了出现的错误,本文较长,可针对目录进行选择性查阅,不过安装的话还是建议耐心的看一下。
注:文章已经总结了较多易出现的报错问题,也可以参考评论区方法,如需要帮助评论区留言,祝成功!
目录
-
- 卸载opencv
- 安装opencv
- 配置Opencv
- 实例测试
- 问题汇总
-
- 树莓派安装软件,有时候会出现 “下列软件包有未满足的依赖关系:... 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系"
- 遇到想用 aptitude 解决依赖包问题,但是使用 apt-get 安装 aptitude 时出现依赖包错误
- fatal error: /opencv2/xfeatures2d/cuda.hpp: No such file or directory 类问题
- 提示缺少boostdesc_bgm.i 等文件的问题解决方案
- 解决 sudo ldconfig /sbin/ldconfig.real: xxx 不是符号连接 问题
- **fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory**
- Package opencv was not found in the pkg-config search path.问题
- 树莓派编译过程死机/卡死 如99%在cv2.cpp.0处
- fatal error: stdlib.h: 没有那个文件或目录 #include_next <stdlib.h>
- [ 76%] Linking CXX shared library ../../lib/libopencv_ximgproc.so [ 76%] Built target opencv_ximgproc make: *** [Makefile:163:all] 错误 2
- import cv2 报错 no modul name cv2 可参考
- 其他技术博文
卸载opencv
为什么先说卸载opencv呢?因为大家都说 opencv 从入门到卸载嘻嘻,开个玩笑,因为很有可能安装的版本错误啊等等各种问题导致你要重新安装!
-
查看已安装的opencv版本
pkg-config --modversion opencv
-
卸载
-
方法1:找到安装opencv的build目录,进入该目录进行卸载。比如我安装在/home/pi/Downloads/opencv-4.0.0/build
cd /home/pi/Downloads/opencv-4.0.0/build sudo make uninstall cd .. rm -r build
-
方法2:不知道安装目录在哪,则可以重新建立build目录安装对应版本,然后再执行上边卸载步骤。然后清理/usr中所有opencv相关项
rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv* cd /usr find . -name "*opencv*" | xargs sudo rm -rf
-
-
移除python相关
-
apt-get remove-doc opencv-data python-opencv
安装opencv
安装前环境准备
安装树莓派系统
-
去官网下载系统镜像,链接贴上:Raspberry Pi OS Downloads
下载如下带桌面的Raspberry Pi OS就可以。
下载完成之后解压,注意路径中不能有中文字符,避免在使用镜像写入工具时出错。 -
格式化内存卡
准备一个16GB或者以上的内存卡,在我的电脑右键–管理–磁盘管理,查看是否只有一个分区,应该是只有一个分区,且为FAT32. -
写入镜像文件
将 .img 镜像文件写入 SD卡,可以使用 Win32 Disk Imager,下载链接:Win32 Disk Imager下载
运行Win32 Disk Imager之后,选择我们下载解压后的img镜像,设备选择TF卡,点击写入,确定,等待写入完成即可。
4.将SD插入树莓派(最好配个显示屏)上电后系统即会开始安装系统,进行简单设置后即可开始使用。
拓展树莓派的文件系统
-
在树莓派终端(或者SSH)上输入:
$ sudo raspi-config
-
然后选择“高级选项”菜单项,选择第7个
-
然后选择“扩展文件系统”
选择第一个回车,会让你重启树莓派,选择立即重启注:如果不能重启,则输入
sudo reboot
重启 -
重新启动后,文件系统已经扩展为包括micro-SD卡上的所有空间。可以通过执行
df -h
检查输出来验证磁盘是否已扩展。
已经释放掉所有内存 容量变成15G!Over!
更换树莓派源为国内镜像源
更换镜像源主要就是为了解决树莓派每次下载都要“远隔重洋”去获取资源时的“龟速”问题
-
在树莓派的命令行界面输入
sudo nano /etc/apt/sources.list
使用nano编辑器编辑source.list -
使用键盘方向键控制,在第一行开头加一个
#
,把下面的内容拷贝到最后一行之后注:网址末尾的
raspbian
重复两次是必须的。因为 Raspbian 的仓库中除了APT软件源还包含其他代码。APT软件源不在仓库的根目录,而在raspbian/
子目录下。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
中科大镜像源
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
-
先按键盘上的
ctrl
+o
,再按回车保存,再按ctrl
+x
退出 nano 编辑器回到命令行界面。再输入sudo apt-get update
命令更新到清华大学/中国科技大学镜像源最新的软件列表。 -
今后在树莓派命令行中执行
sudo apt-get install 软件名
时便会自动从清华/中科大开源软件镜像站高速下载 -
最好再重启一下树莓派
sudo reboot
也可以参考该博文:树莓派换镜像源 清华大学镜像源教程
给树莓派增加交换空间SWAP
在开始编译前,建议你增加交换空间。这将使你使用树莓派的所有四个内核来编译OpenCV,而不会由于内存耗尽导致编译挂起。
-
输入
sudo nano /etc/dphys-swapfile
打开 / etc / dphys - swapfile文件 -
然后编辑 CONF_SWAPSIZE 变量为2048或1024:
-
重新启动交换服务
sudo /etc/init.d/dphys-swapfile stop sudo /etc/init.d/dphys-swapfile start
注意:增加交换空间的大小可能烧坏树莓派 microSD卡,因此在我们后续编译完成之后就再改回CONF_SWAPSIZE
正式安装
更新系统
输入sudo apt-get update && sudo apt-get upgrade
更新系统
安装OpenCV所需要依赖的工具和一些图像视频库
-
安装CMake开发人员工具
输入如下命令安装build-essential、cmake、git和pkg-config
sudo apt-get install build-essential cmake git pkg-config
-
安装常用图像工具包:使我们可以从磁盘加载各种图像文件格式
-
输入如下命令安装jpeg格式图像工具包
sudo apt-get install libjpeg8-dev
-
输入如下命令安装tif格式图像工具包
sudo apt-get install libtiff5-dev
-
安装JPEG-2000图像包
sudo apt-get install libjasper-dev
-
安装png图像工具包
sudo apt-get install libpng12-dev
-
-
安装常用视频库:使我们从磁盘读取各种视频文件格式,以及直接使用视频流
-
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev
-
-
安装GTK2.0
-
sudo apt-get install libgtk2.0-dev
-
-
安装数值函数优化包
-
sudo apt-get install libatlas-base-dev gfortran
-
-
装Python 2.7和Python 3头文件,这样我们就可以使用Python绑定编译OpenCV
-
sudo apt-get install python2.7-dev python3-dev
-
下载opencv源码
我下载的是opencv4.0.0版本,选择其他版本也可以,直接按照网站去下载源代码
-
下载Opencv-4.0.0
方法1:树莓派终端输入命令
-
wget -O opencv-4.0.0.zip https://github.com/Itseez/opencv/archive/4.0.0.zip
方法2:电脑上进入该网页
https://github.com/Itseez/opencv/archive/4.0.0.zip
下载后通过U盘拷贝到树莓派 -
-
下载OpenCV_contrib-4.0.0
方法1:树莓派终端输入命令
wget -O opencv_contrib-4.0.0.zip https://github.com/Itseez/opencv_contrib/archive/4.0.0.zip
方法2:电脑上进入该网页
https://github.com/Itseez/opencv_contrib/archive/4.0.0.zip
下载后通过U盘拷贝到树莓派 -
解压Opencv-4.0.0和OpenCV_contrib-4.0.0
unzip opencv-4.0.0.zip unzip opencv_contrib-4.0.0.zip
配置CMake编译OPencv环境
使用CMake设置编译,然后运行 make 来编译OpenCV。这是整个过程中耗时最长的步骤,大约4个小时。回到OpenCV存储库并创建 build 文件夹,用来存放 CMake 编译时产生的临时文件。
-
进入opencv安装目录 注:我这里将解压Opencv-4.0.0和OpenCV_contrib-4.0.0在了/home/pi/opencv目录下
-
cd /home/pi/opencv/opencv-4.0.0
-
-
新建 build 文件夹,存放 CMake 编译时产生的临时文件
-
mkdir build
-
-
进入 build 文件夹
-
cd ./build
-
设置CMake编译参数,安装目录默认为 /usr/local
首先进入build 文件夹cd /home/pi/opencv/opencv-4.0.0/bu