树莓派3B+安装Opencv和opencv_contrib指导手册
1.换源
将源更换成国内源,可以提升下载速度
sudo vim /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
sudo vim /etc/apt/sources.list.d/raspi.list
//注释掉原有的源,换成下面的源
deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
//更新一下软件包,升级已有包
sudo apt-get update
sudo apt-get upgrade
2.软件的更新与升级
// 软件源更新
sudo apt-get update
// 升级本地所有安装包,最新系统可以不升级,版本过高反而需要降级才能安装
sudo apt-get upgrade
// 升级树莓派固件,固件比较新或者是Ubuntu则不用执行
sudo rpi-update
3.树莓派swap扩容
树莓派3B+的默认内存很小,在编译一些源码的时候,会出现内存被耗尽,编译被中断的情况,所以需要扩容,树莓派3B+的内存是1G所以我们需要把内存扩大到1G。
cd /var
// 先关闭
sudo swapoff /var/swap
// 重新设置大小1M * 1024 = 1G
sudo dd if=/dev/zero of=swap bs=1M count=1024
// 格式化
sudo mkswap /var/swap
// 开启
sudo swapon /var/swap
// 查看当前已生效的swap
swapon -s
// 查看当前swap使用情况,此时就可以看到swap是1G了
free -m
4.安装构建OpenCV的相关工具和常用的图像工具包
// 安装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
//安装视频I/O包(注意最后一个包的数字“4”后面是“L”)
sudo apt-get install ffmpeg
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
//安装gtk2.0
sudo apt-get install libgtk2.0-dev
//优化函数包
sudo apt-get install libatlas-base-dev gfortran
//如果你希望在Python中使用OpenCV,那么你还需要安装Python的开发包
sudo apt-get install python-dev python3-dev
5.下载opencv和opencv_contrib包,解压
创建openc文件夹
/** 使用wget下载OpenCV源码,觉得慢的话可以到https://github.com/opencv/opencv/releases下载OpenCV的源代码
* tar.gz格式,需要解压好,放到用户目录下
**/
// 下载OpenCV
wget -O opencv-3.4.3.zip https://github.com/Itseez/opencv/archive/3.4.3.zip
// 解压OpenCV
unzip opencv-3.4.3.zip
// 下载OpenCV_contrib库:
wget -O opencv_contrib-3.4.3.zip https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip
// 解压OpenCV_contrib库:
unzip opencv_contrib-3.4.3.zip
将解压的opencv-3.4.3的文件夹放到opencv文件夹里面,再将opencv_contrib-3.4.3的解压文件夹放到opencv-3.4.3的文件夹下
打开opencv-3.4.3的解压包
// 打开源码文件夹,这里以我修改文章时最新的3.4.3为例
cd opencv-3.4.3
新建一个名为build的文件夹用来存放cmake编译时产生的临时文件
// 新建build文件夹
mkdir build
// 进入build文件夹
cd build
6.opencv和opencv_contrib包编译
** CMAKE_BUILD_TYPE是编译方式
* CMAKE_INSTALL_PREFIX是安装目录
* OPENCV_EXTRA_MODULES_PATH是加载额外模块
* OPENCV_ENABLE_NONFREE 是需要得到contrib库里面的专利许可指令,不然一些库没法使用
* INSTALL_PYTHON_EXAMPLES是安装官方python例程
* BUILD_EXAMPLES是编译例程(这两个可以不加,不加编译稍微快一点点,想要C语言的例程的话,在最后一行前加参数INSTALL_C_EXAMPLES=ON \)
**/
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv/opencv-3.4.3/opencv_contrib-3.4.3/modules ..
(OPENCV_EXTRA_MODULES_PATH=使用自己的opencv_contrib库中的modules安装路径)
开始编译
/** 编译,以管理员身份,否则容易出错
* make命令参数-j4指允许make使用最多4个线程进行编译,4个线程虽快但卡,我用的2个线程
* 所以可以根据自己机器的情况进行更改
**/
sudo make -j2
// 安装
sudo make install
// 更新动态链接库
sudo ldconfig
6.测试
#include <iosteam>
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat image;
image=imread("ali.jpg");
namedWindow("input image");
imshow("input image", image);
waitKey(0);
return 0;
}
终端输入,生成可执行文件
g++ a.cpp `pkg-config opencv --libs --cflags opencv` //列出使用opencv库编译时所需要的选项。(头文件路径,链接库)
执行
./a.out
注意:在SSH中执行时,会提示
Gtk-WARNING **: cannot open display: :
这时需要用VNC来执行,或者用显示屏执行
安装过程问题解决:
1、libjasper-dev 无法安装,解决办法
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
2、找不到库文件 解决办法
例如:
/usr/local/softwork/opencv-3.4.3/opencv_contrib-3.4.0/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp:42:10:
fatal error: /opencv2/xfeatures2d.hpp: No such file or directory
#include "/opencv2/xfeatures2d.hpp"
^~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
根据给的路径找到xfeature2d.hpp的文件并打开,找到第42行如下:
40 #ifndef __OPENCV_XFEATURES2D_HPP__
41 #define __OPENCV_XFEATURES2D_HPP__
42#include "opencv2/xfeatures2d.hpp"
找到xfeatures2d.hpp文件路径,在打开文件中将"opencv2/xfeatures2d.hpp" 改为绝对路径
#include"/usr/local/softwork/opencv3.4.0/opencv_contrib3.4.3/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp"
3、找不到 boostdesc_bgm.i 该文件 解决办法
可到网上下载boostdesc_bgm.i 文件然后放到所需的文件夹下