OpenCV官方文档:OpenCV3.4.8文档
下载 opencv 及 opencv_contrib 的源代码
opencv全部版本下载地址:https://github.com/opencv/opencv/releases
opencv_contrib全部版本下载地址:https://github.com/opencv/opencv_contrib/releases
关于Opencv-3.4.8的源代码我已经上传到网盘了,可以直接下载:
链接:https://pan.baidu.com/s/1OrVECTtrx03LhH5rlWQppA
提取码:pk69
解决Github下载慢的问题
打开本机上的Hosts文件
windows系统下 Hosts 文件的地址是C:\Windows\System32\drivers\etc
ubuntu系统下 Hosts 文件的地址是/etc/hosts
我们可以利用https://www.ipaddress.com/ 来获得以下三个GitHub域名的IP地址:
github.com
github.global.ssl.fastly.net
codeload.github.com
查到IP地址后,用以下格式将IP地址和域名一起写入 Hosts 文件并保存
在终端或CMD中,执行以下命令,刷新 DNS 缓存
ipconfig /flushdns
刷新之后,再从github上下载就可以达到 100KB/s + 的速度
虽然不算很快,但也不至于会因为网络链接问题下载失败了
注意:静态IP经常会发生变化,下载Github代码之前,请先检查一下IP地址对不对,保证每次都是最新的地址
安装aptitude
aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。
树莓派在换源后,apt-get install 安装软件, 会报“无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系”。
这个错误出现的主要原因是,系统中已经安装了被依赖的包的高版本,并且版本高于所要求的这个版本,不匹配导致安装失败。
虽然这种报错可以手动安装指定版本的软件包,但是各种互相依赖的一环套一环,会出现各种新的报错。
aptitude可以根据安装时检测到的不满足依赖关系的软件包主动提出解决方案来完成安装。
非常重要!!!一定要在换源之前安装好aptitude,亲测在换源后装aptitude也会出现软件包依赖关系不匹配的报错
sudo apt-get install aptitude
树莓派换源
- 备份源文件
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
- 使用管理员权限,编辑
/etc/apt/sources.list
文件
sudo nano /etc/apt/sources.list
- 用
#
注释掉原文件内容,写入以下内容
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
- 使用管理员权限,编辑
/etc/apt/sources.list.d/raspi.list
文件
$ sudo nano /etc/apt/sources.list.d/raspi.list
- 用
#
注释掉原文件内容,写入以下内容
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
- 同步更新源
sudo apt-get update
- 更新已安装的软件包(不必须)
sudo apt-get upgrade
安装Opencv的相关工具
如果你的树莓派做了换源,一定要用aptitude来装以下工具包!!!否册某些软件包会报出上述错误。
- 安装cmake编译器
sudo apt-get install build-essential cmake git pkg-config
- 安装OpenCV的图像工具包
sudo aptitude install libjpeg8-dev
sudo aptitude install libtiff5-dev
sudo aptitude install libjasper-dev
sudo aptitude install libpng12-dev
- 安装视频I/O包
sudo aptitude install libavcodec-dev
sudo aptitude install libavformat-dev
sudo aptitude install libswscale-dev
sudo aptitude install libv4l-dev
- 安装gtk2.0和优化函数包
sudo aptitude install libgtk2.0-dev
sudo aptitude install libatlas-base-dev gfortran
安装编译 Opencv-3.4.8 + Opencv_contrib-3.4.8
- 所有工作准备好后,准备解压 opencv-3.4.8 和 opencv_contrib-3.4.8
cd /home/pi/tools/Opencv3.4.8/
unzip /home/pi/tools/Opencv3.4.8/opencv-3.4.8.zip
unzip /home/pi/tools/Opencv3.4.8/opencv_contrib-3.4.8.zip
- 进入
./opencv-3.4.8/
目录下,新建release文件夹
#进到源代码目录下
cd /home/pi/tools/Opencv3.4.8/opencv-3.4.8
#新建release文件夹
mkdir release
#进入release文件夹
cd release/
- cmake
设置cmake编译参数,安装目录默认为/usr/local,OPENCV_EXTRA_MODULES_PATH 根据自己的Opencv_contrib设定
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/pi/tools/Opencv3.4.8/opencv_contrib-3.4.8/modules \
-D BUILD_EXAMPLES=ON ..
cmake完成后结果如下:
正常情况下,cmake完成之后,我们可以直接在release目录下输入命令:make -j4
进行编译工作了。但实际上这样很可能出错,出错的原因一般都是说缺少什么文件,缺少的文件主要是Cmake在配置时由于网络不好没下载下来。建议大家编译之前到release/downloads/xfeatures2d/
文件夹里查看是否有我如下11个文件
如果没有这些文件,务必要拷贝到release/downloads/xfeatures2d/
文件夹里(这11个文件在本文章开头的云盘链接里都有),不然在下一步进行编译工作时会报错
- 开始编译
make命令参数-j4指允许make使用最多4个线程进行编译,可以根据自己机器的情况进行更改
sudo make -j4
/home/pi/tools/Opencv3.4.8/opencv_contrib-3.4.8/modules/xfeatures2d/src
解决方法①:出现类似fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录
问题时,将/home/pi/tools/Opencv3.4.8/opencv_contrib-3.4.8/modules/xfeatures2d/include/opencv2/xfeatures2d
中的cuda.hpp复制到报错文件matchers.hpp
的目录下,并修改matchers.hpp
中第52行代码为# include "cuda.hpp"
解决方法②:
在Opencv的CmakeLists.txt
中加入以下include语句:
INCLUDE_DIRECTORIES("/home/pi/tools/Opencv3.4.8/opencv_contrib-3.4.8/modules/xfeatures2d/include/")
然后重新cmake再进行编译
整个编译过程大概要一个半小时,需要耐心等待
- 编译完成,在
release/
目录下输入命令:
sudo make install
等待安装完成即可。
配置Opencv3.4.8环境
- 安装完成后,还需要给opencv配置一下环境,使用nano打开,输入命令如下:
sudo nano /etc/ld.so.conf.d/opencv.conf
- 在此文件中写入一下内容,并保存退出
/usr/local/lib
- 再输入命令如下:
sudo ldconfig
- 更改环境变量,输入命令如下:
sudo nano /etc/bash.bashrc
在此文件中的末尾写入以下内容,并保存退出
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
至此,Opencv3.4.8已安装完成,测试如下: