如何在树莓派4B上安装OpenCV

opencv下载

首先在树莓派的终端界面通过wegt命令下载(但下载速度可能很慢),终端输入下列代码进行下载

cd /home/pi/Downloads
wget https://github.com/Itseez/opencv/archive/3.1.0.zip
wget https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip

输入以下命令解压opencv压缩包,也可以在Windows下解压后直接通过传输工具传输到目前目录下

cd /home/pi/Downloads
unzip opencv-3.1.0.zip
unzip opencv_contrib-3.1.0.zip

解压后如下图所示:
在这里插入图片描述

换源

在树莓派的命令行界面输入命令:

sudo nano /etc/apt/sources.list

清华镜像源如下:

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

在这里插入图片描述
注意:这里需要把stretch改为buster,换源后,输入sudo apt-get install update更新下。

opencv3.1.0的安装

安装numpy

输入以下命令安装好numpy,这个是python的科学计算库。

sudo pip3 install numpy

扩展目录到SD卡

将树莓派根目录扩展到整个SD卡,代码如下:

sudo raspi-config

首先选择第7项,然后选择Expand Filesystem,将根目录扩展到这个SD卡,充分利用SD卡的存储空间。如果不进行这一步,后续命令会出现卡死。
在这里插入图片描述
在这里插入图片描述
退出设置界面,重启树莓派。用df -h查看是否挂载成功
在这里插入图片描述

安装OpenCV所需的库

依次在终端输入以下命令进行安装

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 libv1l-dev -y
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y

在这里插入图片描述
总结:上面的库必须安装成功,否正后面的编译会出现诸多问题,解决起来更麻烦。

配置编译文件

进入opencv-3.1.0目录下,新建一个build文件,后续所有的Cmake配置文件会存放在里面

cd /home/pi/Downloads/opencv-3.1.0
mkdir build
cd build

输入以下命令进行Cmake配置,Cmake后可输出适配于树莓派平台的Makefile,后面编译opencv。
注意,下面这是一行命令(包括最后那俩点儿),需要耐心等待十五分钟左右,慢不要紧,不报错就行:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv_contrib-3.1.0/modules -D BUILD_EXAMPLES=ON -D WITH_LIBV1L=ON -D PYTHON3_EXECUTABLE=/usr/bin/python3.7 -D PYTHON_INCLUDE_DIR=/usr/include/python3.7 -D PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include ..

在这里插入图片描述
命令解释如下:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv_contrib-3.1.0/modules \#本行需根据自己安装的路径修改
-D BUILD_EXAMPLES=ON \
-D WITH_LIBV1L=ON \
-D PYTHON3_EXECUTABLE=/usr/bin/python3.7 \
-D PYTHON_INCLUDE_DIR=/usr/include/python3.7 \
-D PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \
..

cmake成功后如下图所示:
在这里插入图片描述

编译

保证树莓派有至少5G的存储空间,这也是上面为什么要挂载到SD卡的原因, 输入以下命令进行编译:

make && sudo make install

在这里插入图片描述
等待慢慢编译,第一次编译至少需要5小时+,如果编译过程中遇到问题,可参考下面的解决办法进行解决.

遇到的问题及解决办法

在编译到80%左右时可能会出现openc_contrib 提示缺少boostdesc_bgm.i文件而出错,这个是由于官方所给的那两个包不全。
在这里插入图片描述
解决方法如下:
可以在我的百度云盘里下载然后将所有带i结尾的文件全部都拷贝到 opencv_contrib/modules/xfeatures2d/src/ 路径下即可。
在这里插入图片描述
然后继续上面的编译操作即可。
编译到96%时,会出现fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录的错误标志
在这里插入图片描述
这个是由于之前在树莓派的python2环境下安装了opencv所致,解决方法如下:
将/home/pi/Downloads/opencv_contrib-3.1.0/modules/xfeatures2d/include/opencv2目录下的xfeatures2d文件夹和xfeatures2d.hpp文件复制粘贴到/home/pi/Downloads/opencv-3.1.0/modules/stitching/include/opencv2目录下即可解决,命令如下:

cp /home/pi/Downloads/opencv_contrib-3.1.0/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp /home/pi/Downloads/opencv-3.1.0/modules/stitching/include/opencv2 -r
cp /home/pi/Downloads/opencv_contrib-3.1.0/modules/xfeatures2d/include/opencv2/xfeatures2d /home/pi/Downloads/opencv-3.1.0/modules/stitching/include/opencv2 -r

在这里插入图片描述
继续后面可能还会出现一个错误:
make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:63:modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:21669:modules/python3/CMakeFiles/opencv_python3.dir/all] 错误 2
make: *** [Makefile:163:all] 错误 2
在这里插入图片描述
解决方法如下:
首先找到/home/pi/Downloads/opencv-3.1.0/modules/python/src2 中的cv2.cpp文件,然后在第885行把char* 改成 const char* 即可解决,最后继续上面的编译操作即可。命令如下:

vim /home/pi/Downloads/opencv-3.1.0/modules/python/src2/cv2.cpp

在这里插入图片描述
最后,就能成功编译到100%了,那么就测试一下,命令如下:

python3
import cv2

可以看到,我这里还是失败,提示的是没有cv2模块:
在这里插入图片描述
解决办法:
输入sudo apt-get install安装以下就可以了,成功后会出现下图的效果:
在这里插入图片描述
最后再输入命令测试一下:

python3
import cv2
cv2.__version__

在这里插入图片描述
至此,恭喜安装完成。

相关推荐
©️2020 CSDN 皮肤主题: 点我我会动 设计师:白松林 返回首页