首先在树莓派的终端界面通过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更新下。
输入以下命令安装好numpy,这个是python的科学计算库。
sudo pip3 install numpy
将树莓派根目录扩展到整个SD卡,代码如下:
sudo raspi-config
首先选择第7项,然后选择Expand Filesystem,将根目录扩展到这个SD卡,充分利用SD卡的存储空间。如果不进行这一步,后续命令会出现卡死。
退出设置界面,重启树莓派。用df -h查看是否挂载成功
依次在终端输入以下命令进行安装
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 \
..
保证树莓派有至少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
python3
import cv2
可以看到,我这里还是失败,提示的是没有cv2模块:
解决办法:
输入sudo apt-get install安装以下就可以了,成功后会出现下图的效果:
最后再输入命令测试一下:
python3
import cv2
cv2.__version__