1.安装setuptools:
wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-19.6.tar.gz #下载
tar -zxvf setuptools-19.6.tar.gz #解压setuptools-19.6.tar.gz
cd setuptools-19.6 #进入解压缩后的文件夹
python3 setup.py build
python3 setup.py install
运行到第4行,报错ModuleNotFoundError: No module named 'distutils.util',执行下步,安装distutils
sudo apt-get install python3-distutils
出现“running build running build_py”表示安装成功
2.安装pip3:
sudo apt-get install pyton3-pip
#查看pip3版本
pip3 -V #出现版本号意味着安装成功
至此,pip3安装成功。
FFmpeg是一套开源的音视频编解码库,opencv可以依赖于此做一些音视频处理。
1.更新源并且安装git
sudo apt-get update #更新
sudo apt-get install git #安装git
2.下载x264源码
git clone https://git.videolan.org/git/x264.git
3.新建config_x264.sh脚本文件
touch config_x264.sh
利用vi打开后添加如下内容
#!/bin/sh
./configure \
--disable-shared --enable-static \
--enable-strip \
--disable-cli
4.增加执行权限后,依次执行以下命令,make可能需要几分钟,耐心等待。
chmod +x config_x264.sh
./config_x264.sh
make -j4
sudo make install
5.下载FFmpeg
wget https://ffmpeg.org/releases/ffmpeg-4.2.2.tar.bz2 #下载
tar jxvf ffmpeg-4.2.2.tar.bz2 #解压
cd ffmpeg-4.2.2.tar.bz2
6.新建config_ffmpeg.sh脚本文件
touch config_ffmpeg.sh
利用vi打开后添加如下内容
#!/bin/sh
PREFIX=/usr/local
./configure \
--enable-gpl --enable-version3 --enable-nonfree \
--enable-static --disable-shared \
\
--prefix=$PREFIX \
\
--disable-opencl \
--disable-thumb \
--disable-pic \
--disable-stripping \
\
--enable-small \
\
--enable-ffmpeg \
--enable-ffplay \
--enable-ffprobe \
\
--disable-doc \
--disable-htmlpages \
--disable-podpages \
--disable-txtpages \
--disable-manpages \
\
--disable-everything \
\
--enable-libx264 \
--enable-encoder=libx264 \
--enable-decoder=h264 \
--enable-encoder=aac \
--enable-decoder=aac \
--enable-encoder=ac3 \
--enable-decoder=ac3 \
--enable-encoder=rawvideo \
--enable-decoder=rawvideo \
--enable-encoder=mjpeg \
--enable-decoder=mjpeg \
\
--enable-demuxer=concat \
--enable-muxer=flv \
--enable-demuxer=flv \
--enable-demuxer=live_flv \
--enable-muxer=hls \
--enable-muxer=segment \
--enable-muxer=stream_segment \
--enable-muxer=mov \
--enable-demuxer=mov \
--enable-muxer=mp4 \
--enable-muxer=mpegts \
--enable-demuxer=mpegts \
--enable-demuxer=mpegvideo \
--enable-muxer=matroska \
--enable-demuxer=matroska \
--enable-muxer=wav \
--enable-demuxer=wav \
--enable-muxer=pcm* \
--enable-demuxer=pcm* \
--enable-muxer=rawvideo \
--enable-demuxer=rawvideo \
--enable-muxer=rtsp \
--enable-demuxer=rtsp \
--enable-muxer=rtsp \
--enable-demuxer=sdp \
--enable-muxer=fifo \
--enable-muxer=tee \
\
--enable-parser=h264 \
--enable-parser=aac \
\
--enable-protocol=file \
--enable-protocol=tcp \
--enable-protocol=rtmp \
--enable-protocol=cache \
--enable-protocol=pipe \
\
--enable-filter=aresample \
--enable-filter=allyuv \
--enable-filter=scale \
--enable-libfreetype \
\
--enable-indev=v4l2 \
--enable-indev=alsa \
--enable-indev=alsa \
--enable-outdev=alsa \
\
--enable-omx \
--enable-omx-rpi \
--enable-encoder=h264_omx \
\
--enable-mmal \
--enable-hwaccel=h264_mmal \
--enable-decoder=h264_mmal \
\
7.增加执行权限后,依次执行以下命令,make可能需要几分钟,耐心等待。
chmod +x config_ffmpeg.sh
./config_ffmpeg.sh
make -j4
sudo make install
在执行./config_ffmpeg.sh时会报错:ERROR:OMX_Core.h not found,输入下面命令解决
sudo apt-get install libomxil-bellagio-dev
输入ffmpeg回车,出现h264_omx和264_mmal字样则表明ffmpeg安装成功,已支持H.264的硬件编解码器。
1.准备工作:将目录扩展到整个SD卡,即输入以下命令后选择“Advanced Options”回车后,选择“Expand Filesystem Ensure......”回车确认。
sudo raspi-config
2.安装numpy,安装opencv所需要的依赖:
#树莓派安装numpy可能非常缓慢甚至终止,因此需要emmmm工具,国内其他pip源我是没找到对应树莓派的numpy包
sudo pip3 install numpy
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 libv4l-dev -y
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y
3.本地下载opencv4.3.0和opencv_contrib4.3.0压缩包后利用filezilla传到根目录上,解压unzip(进入连接后下载所需版本即可)。
opencv4.3.0:https://opencv.org/releases/
opencv_contrib4.3.0:https://github.com/opencv/opencv_contrib/releases
4.增加SWAP空间:能够使用Raspberry Pi的所有四个内核来编译OpenCV ,加快编译速度,并且不会由于内存耗尽而导致编译挂起
sudo vi /etc/dphys-swapfile
#注释掉CONF_SWAPSIZE=100
#添加一行
CONF_SWAPSIZE=2048
5.Cmake配置:
cd opencv-4.3.0
mkdir build #新建build文件夹
cd build
输入以下配置,注意需要根据自己的路径进行修改,否则会报错。回车后静等几分钟。(\表示将代码延续到下一行)
这里配置必须认真修改,否则make花费好几个小时后依旧没安装好opencv。
cmake -D CMAKE_BUILD_TYPE=RELEASE \ #代表编译类型为发行版本
> -D CMAKE_INSTALL_PREFIX=/usr/local \ #安装路径
> -D INSTALL_C_EXAMPLE=ON \ #C demo
> -D INSTALL_PYTHON_EXAMPLE=ON \ #python demo
> -D OPENCV_EXTRA_MODULES_PATH=/home/cyj/opencv_contrib-4.3.0/modules \ #OpenCV Contrib路径
> -D BUILD_EXAMPLES=ON \ #编译demo
> -D WITH_LIBV4L=ON \ #开启Video for Linux
> -D WITH_FFMPEG=ON \ #开启FFmpeg
> -D PYTHON3_EXECUTABLE=/usr/bin/python3.7 \ #Python3.7路径
> -D PYTHON_INCLUDE_DIR=/usr/include/python3.7 \ #Python3.7 include文件夹
> -D PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so \ #Python3.7库
> -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/local/lib/python3.7/dist-packages/numpy/core/include \ #Python3 Numpy安装路径,有时路径在/usr/lib/python3.7/dist-packages/numpy/core/include,根据自己路径定
..
6.cmake生成Makefile后开始编译:需要比较长的时间,大概3-4小时
make
中途会出错:
1)在72%会报错:原因是boostdesc和vgg文件缺失导致编译失败,在网上搜索这两个文件夹,将其中11个.i文件利用filezilla全部上传至/home/用户名/opencv_contrib-4.3.0/modules/xfeatures2d/src目录下。
继续make,会从断点处继续编译。
2)在73%会报错,如下是.../opencv_contrib-4.3.0/modules/xfeatures2d/test/test_features2d.cpp引入的头文件不存在。
解决方法:打开test_features2d.cpp查看出错处#include,发现两个头文件test_detectors_regression.impl.hpp和test_descriptors_regression.impl.hpp都找不到。此处需要将.../opencv-4.3.0/moduls/features2d/test/目录下的这两个头文件拷贝到.../opencv_contrib-4.3.0/modules/xfeatures2d/test/目录下,并且修改test_features2d.cpp头文件的路径。修改为:
#include "test_detectors_regression.impl.hpp"
#include "test_descriptors_regression.impl.hpp"
3)继续make后又报错:是.../opencv_contrib-4.3.0/modules/xfeatures2d/test/test_rotation_and_scale_invariance.cpp引入的头文件不存在。
解决方法:查看test_rotation_and_scale_invariance.cpp引入的头文件,发现两个头文件test_detectors_invariance.impl.hpp和test_descriptors_invariance.impl.hpp都找不到。同上步解决方法,将.../opencv-4.3.0/moduls/features2d/test/目录下的这两个头文件拷贝到.../opencv_contrib-4.3.0/modules/xfeatures2d/test/目录下,并且修改test_rotation_and_scale_invariance.cpp头文件路径:
#include "test_detectors_invariance.impl.hpp"
#include "test_descriptors_invariance.impl.hpp"
4)继续make后又报错:是上面引入的test_detectors_invariance.impl.hpp需要头文件test_invariance_utils.hpp。
解决方法:将.../opencv-4.3.0/moduls/features2d/test/目录下的test_invariance_utils.hpp拷贝到.../opencv_contrib-4.3.0/modules/xfeatures2d/test/即可。
这些报错是我安装过程中出现的,如果您在编译过程中出现其他的错误,可以仔细查看报错信息,使用类似的解决方法进行处理。
继续make,直至100%编译结束。
7.安装:
sudo make install
8.测试是否安装成功:
python3
import cv2
cv2.__version__
#输出版本意味着安装成功
注意:
如果cmake配置错误或者make错误:
make clean #清除上次make命令产生的object文件以及可执行文件
然后直接删除build目录即可
rm -r build
至此,树莓派4B成功安装pip3、numpy、FFmpeg和opencv4.3.0(增加SWAP空间)。