Raspberry Pi で OpenCV のインストール(Python 仮想環境上)

Raspberry Pi 上に Python の仮想環境を作成し,その中に OpenCV をインストールする手順をまとめる. 配布されているパッケージを使う方法と,ソースコードからビルドする方法の 2 通りを示す.

リモートログイン

  1. ssh でリモートログインする

    ユーザ名は,Raspberry Pi Imager で書き込みを行うときに設定したものを使う. Raspberry Pi OS では,既定のユーザ名・パスワードは設定されていない. パスワードの入力中に画面に文字が表示されないのは正常動作である.

    X アプリケーションの画面を手元のパソコンに転送する場合は -X を付ける.

    ssh -X <ユーザ名>@raspberrypi.local
    

    Windows で MobaXTerm を使ってリモートログインしている画面を示す.

Python の仮想環境の作成

  1. 作成する Python の仮想環境の名前を決めておく
    • Python の仮想環境の名前: py3env
  2. Python 3 の仮想環境を作成する
    source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
    mkvirtualenv --python=/usr/bin/python3 py3env
    lsvirtualenv
    

OpenCV のインストール(パッケージを使用)

Raspberry Pi(64 ビット版 Raspberry Pi OS)では,pip でビルド済みの OpenCV をインストールできる.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
workon py3env
pip install -U pip
pip install -U numpy opencv-python opencv-contrib-python

OpenCV のインストール(ソースコードからビルド)

最新のソースコードを使う場合や,ビルド済みパッケージが用意されていない環境の場合は,ソースコードからビルドする. ビルドには数時間かかることがある.

  1. ビルドに必要なパッケージのインストール
    sudo apt update
    sudo apt -y install build-essential cmake git pkg-config \
      python3-dev libjpeg-dev libpng-dev libtiff-dev \
      libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
      libgtk-3-dev libatlas-base-dev gfortran
    
  2. ソースコードの取得
    source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
    workon py3env
    pip install -U pip
    pip install -U numpy
    cd /tmp
    rm -rf opencv opencv_contrib
    git clone https://github.com/opencv/opencv.git
    git clone https://github.com/opencv/opencv_contrib.git
    
  3. スワップ領域の拡大

    メモリ容量が小さい機種では,ビルド中にメモリ不足になることがある.スワップ領域を一時的に拡大する.

    sudo sed -i 's/^CONF_SWAPSIZE=.*/CONF_SWAPSIZE=2048/' /etc/dphys-swapfile
    sudo systemctl restart dphys-swapfile
    
  4. ビルドとインストール
    cd /tmp/opencv
    rm -rf build
    mkdir build
    cd build
    cmake -D CMAKE_BUILD_TYPE=RELEASE \
          -D CMAKE_INSTALL_PREFIX=/usr/local \
          -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib/modules \
          -D BUILD_opencv_python3=ON \
          -D PYTHON3_EXECUTABLE=$(which python3) \
          -D INSTALL_PYTHON_EXAMPLES=ON \
          -D BUILD_EXAMPLES=OFF ..
    make -j$(nproc)
    sudo make install
    sudo /sbin/ldconfig
    
  5. スワップ領域を元に戻す
    sudo sed -i 's/^CONF_SWAPSIZE=.*/CONF_SWAPSIZE=100/' /etc/dphys-swapfile
    sudo systemctl restart dphys-swapfile
    

OpenCV がインストールされたことの確認

端末で,次のコマンドを実行し,バージョン番号が表示されることを確認する.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
workon py3env
python3 -c "import cv2; print(cv2.__version__)"