Raspberry Pi に OpenCV 4.x をインストール
元ネタには virtualenv で複数のPythonバージョンでの使い分けも記述あり
準備
インストールを始める前にファイルシステムを拡張
$ sudo raspi-config
Advanced Options
から Expand Filesystem
を実行してリブート
df -h
コマンドでファイルシステムが拡張されているのを確認
OS環境を最新に
$ sudo apt-get update
$ sudo apt-get upgrade
CMake環境をインストール
$ sudo apt-get install build-essential cmake unzip pkg-config
イメージファイル用ライブラリをインストール
$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev
ビデオストリーム用ライブラリをインストール
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev
画像表示用ライブラリをインストール
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libcanberra-gtk*
演算用ライブラリをインストール
$ sudo apt-get install libatlas-base-dev gfortran
Python3開発用ヘッダをインストール
$ sudo apt-get install python3-dev
OpenCVのインストール
ソースの取得
$ cd ~
$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.0.1.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.0.1.zip
$ unzip opencv.zip
$ unzip opencv_contrib.zip
NumPyの準備
$ pip install numpy
cmakeでビルド準備
$ cd ~/opencv-4.0.1
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-4.0.1/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF ..
cmakeの結果に問題ないか確認
ビルド時にスワップメモリが不足するのを避けるため、一時的にスワップファイルを拡張
フラッシュメモリの劣化を防ぐため、ビルド後にもとのサイズに戻す
/etc/dphys-swapfile
CONF_SWAPSIZE=2048
スワップサービスの再起動
$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start
$ swapon
ビルド
$ make -j4
インストール
$ sudo make install
$ sudo ldconfig
スワップファイルのサイズを100Mに戻してサービスを再起動
インストールの確認
>>> import cv2
>>> cv2.__version__
'4.0.1'
>>> exit()
おまけにmatplotlibをインストール
$ pip install matplotlib