LoginSignup
12
17

More than 5 years have passed since last update.

RaspberryPi: OpenCV 3.4.5/4.0.1のビルド手順

Last updated at Posted at 2018-12-29

ラズパイ向け OpenCVのdebパッケージを作成・公開してますが、この記事は、自分でビルドしたい方向けの手順です。

環境

  • Raspberry Pi: 3B+ / 3B / 2B
  • Raspbian: 2018-11-13-raspbian-stretch-lite
  • MicroSD: 16GB

手順

  1. システムの準備
    1. Raspbian を EtcherなどでmicroSDに焼く。
    2. ssh できるように、sshというファイル名の、空ファイルをFAT32パーティションに作成
  2. 初回起動

    1. microSDをラズパイ本体に入れて、USB電源アダプタを挿す。
    2. login: pi / password: raspberry にてログイン
    3. パッケージ更新・再起動:
      sudo apt update && sudo apt upgrade -y && sudo reboot
  3. 初期設定

    1. sudo raspi-config
      1. パスワード変更
      2. WiFi設定
        などなど
  4. OpenCVビルドの準備

    1. SWAPのサイズを100MB => 2GBに変更

      こぴぺ
      swapon
      sudo sed -i -e 's/SWAPSIZE=.*/SWAPSIZE=2048/g' /etc/dphys-swapfile
      sudo systemctl restart dphys-swapfile.service
      swapon
      
      実行例
      pi@raspberrypi:~ $ swapon
      NAME      TYPE SIZE USED PRIO
      /var/swap file 100M   0B   -2
      pi@raspberrypi:~ $ sudo sed -i -e 's/SWAPSIZE=.*/SWAPSIZE=2048/g' /etc/dphys-swapfile
      pi@raspberrypi:~ $ sudo systemctl restart dphys-swapfile.service
      pi@raspberrypi:~ $ swapon
      NAME      TYPE SIZE USED PRIO
      /var/swap file   2G   0B   -2
      pi@raspberrypi:~ $
      
    2. OpenCVのビルドに必要なパッケージを導入

      こぴぺ
      sudo apt-get install -y \
          build-essential cmake pkg-config \
          libjpeg-dev libtiff5-dev libpng-dev \
          libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
          libxvidcore-dev libx264-dev \
          libgtk2.0-dev libgtk-3-dev \
          libcanberra-gtk* \
          gfortran \
          python2.7-dev python3-dev \
          libavresample-dev libtesseract-dev libleptonica-dev \
          libgstreamer1.0-dev  libgstreamer-plugins-base1.0-dev libhdf5-dev \
          libatlas-base-dev liblapacke-dev \
          python3-numpy python-numpy libjasper-dev
      
    3. ソースコード取得・解凍

      こぴぺ
      cd ~
      #OPENCV_VERSION=3.4.5
      OPENCV_VERSION=4.0.1
      wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip -O opencv-${OPENCV_VERSION}.zip
      wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip -O opencv_contrib-${OPENCV_VERSION}.zip
      unzip opencv-${OPENCV_VERSION}.zip
      unzip opencv_contrib-${OPENCV_VERSION}.zip
      
  5. OpenCVビルド

    1. buildフォルダ作成、cmakeにて設定

      こぴぺ
      OPENCV_VERSION=4.0.1
      cd ~/opencv-${OPENCV_VERSION}
      mkdir build
      cd build 
      cmake -DCMAKE_BUILD_TYPE=Release \
          -D CMAKE_INSTALL_PREFIX=/usr/local \
          -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-${OPENCV_VERSION}/modules \
          -D ENABLE_VFPV3=ON \
          -D ENABLE_NEON=ON \
          -D BUILD_TESTS=OFF \
          -D WITH_TBB=OFF \
          -D INSTALL_PYTHON_EXAMPLES=ON \
          -D OPENCV_SKIP_PYTHON_LOADER=ON \
          -D OPENCV_PYTHON2_INSTALL_PATH=/usr/local/lib/python2.7/dist-packages \
          -D OPENCV_PYTHON3_INSTALL_PATH=/usr/local/lib/python3.5/dist-packages \
          -D OPENCV_GENERATE_PKGCONFIG=ON \
          -D BUILD_EXAMPLES=ON ..
      
    2. ビルド開始

      こぴぺ
      OPENCV_VERSION=4.0.1
      cd ~/opencv-${OPENCV_VERSION}/build
      make -j4
      

      # -j4(4プロセス並列)でコケる場合は、-j1でやる。python2/3向けのモジュールのリンクあたりがすごくメモリを食う。

    3. 待つ (寝る前に仕掛けておくとよいかも?)

    4. インストール (CMAKE_INSTALL_PREFIXで指定した/usr/local以下にインストールされる)

      こぴぺ
      OPENCV_VERSION=4.0.1
      cd ~/opencv-${OPENCV_VERSION}/build
      sudo make install
      sudo ldconfig
      
  6. テスト
    後ほど

その他

  1. cpuをパフォーマンスモードにする
    echo performance | sudo tee /sys/devices/system/cpu/cpufreq/policy0/scaling_governor

    pi@raspberrypi:~ $ # 使用可能なモード
    pi@raspberrypi:~ $ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_available_governors 
    conservative ondemand userspace powersave performance schedutil 
    pi@raspberrypi:~ $ # 現在設定されているモード
    pi@raspberrypi:~ $ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
    ondemand
    pi@raspberrypi:~ $ # performanceモードに設定
    pi@raspberrypi:~ $ echo performance | sudo tee /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
    performance
    pi@raspberrypi:~ $ # 設定確認
    pi@raspberrypi:~ $ cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
    performance
    pi@raspberrypi:~ $ 
    
  2. 時間計測 (bashにて)

    (time コマンド) 2>&1 | tee filename.log
    
    pi@raspberrypi:~ $ (time make -j4) 2>&1 | tee ~/build-make.log 
    
  3. アンインストール
    buildフォルダにて、sudo make uninstall で、インストールされたファイルの削除が行われるが、フォルダと、(/usr/local/libの)シンボリックリンクが削除されない。

12
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
17