前言
编译前先看编译可能遇到的问题,提前修改添加树莓派的swap交换分区,同时可以提前将缺失文件补充进文件夹
一、安装OpenCV所依赖的各种工具和图像视频库
软件更新升级
// 软件源更新
sudo apt-get update
// 升级本地所有安装包,版本过高反而需要降级才能安装
sudo apt-get upgrade
分别安装各种依赖工具
// 安装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包
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
一次性安装所有依赖工具
//全套安装指令
sudo apt-get install build-essential cmake git pkg-config libjpeg8-dev libtiff5-dev libjasper-dev libpng12-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk2.0-dev libatlas-base-dev gfortran -y
二、安装编译OpenCV
下载OpenCV
// 下载OpenCV
wget -O opencv-4.3.0.zip https://github.com/Itseez/opencv/archive/4.3.0.zip
// 下载OpenCV_contrib库:
wget -O opencv_contrib-4.3.0.zip https://github.com/Itseez/opencv_contrib/archive/4.3.0.zip
解压文件
// 压缩包路径以"/home/pi/Desktop/opencv4.3.0"为例
// 解压OpenCV
unzip opencv-4.3.0.zip
// 解压OpenCV_contrib库:
unzip opencv_contrib-4.3.0.zip
准备编译
// 打开源码文件夹,这里以4.3.0为例
cd opencv-4.3.0
// 新建release文件夹
mkdir release
// 进入release文件夹
cd release
//* CMAKE_BUILD_TYPE是编译方式
* CMAKE_INSTALL_PREFIX是安装目录
* OPENCV_EXTRA_MODULES_PATH是加载额外模块
* INSTALL_PYTHON_EXAMPLES是安装官方python例程
* BUILD_EXAMPLES是编译例程 **/
//这五行直接复制,回车,加载额外模块路径以"/home/pi/Desktop/opencv4.3.0/opencv_contrib-4.3.0/modules"为例
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/home/pi/Desktop/opencv4.3.0/opencv_contrib-4.3.0/modules \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON ..
编译
// 开始编译,漫长的等待
// 若机器存在多核,则可执行sudo make -j4,该命令使用4核同时编译
sudo make
编译可能遇到的问题
问题1:fatal error: boostdesc_bgm.i: No such file or directory
缺少boostdesc_bgm.i、boostdesc_bgm_bi.i、boostdesc_bgm_hd.i、boostdesc_binboost_064.i、boostdesc_binboost_128.i、boostdesc_binboost_256.i、boostdesc_lbgm.i、vgg_generated_48.i、vgg_generated_64.i、vgg_generated_80.i、vgg_generated_120.i
等文件
解决方法:
将缺失文件添加至"/home/pi/Desktop/opencv4.3.0/opencv_contrib-4.3.0/modules/xfeatures2d/src/"
目录下
重新编译(执行编译命令将继续编译)
问题2:fatal error: features2d/test/test_detectors_regression.impl.hpp: No such file or directory
缺少features2d/test/test_detectors_regression.impl.hpp
文件
解决方法:
将opencv/module/features2d
文件夹复制至编译所在路径下(/home/pi/Desktop/opencv4.3.0/opencv-4.3.0/release
)
重新编译(执行编译命令将继续编译)
问题3:编译卡在98%
解决方法:
添加树莓派的swap交换分区,更改conf_swapsize的值
sudo nano /etc/dphys-swapfile
更改前:
更改后:
重启dphys-swapfile服务:
sudo /etc/init.d/dphys-swapfile restart
安装
// 安装
sudo make install
// 更新动态链接库
sudo ldconfig
三、测试
//终端输入python3,然后输入导入cv2
python3
>>import cv2
>>cv2.__version__
'4.3.0'
安装成功(亲测树莓派zero、树莓派4B有效)