樹莓派4B系列3:安裝pip3+安裝FFmpeg+安裝opencv4.3.0(增加SWAP空間)

一、安裝pip3

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

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的硬件編解碼器。

三、安裝opencv4.3.0

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空間)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章