ラズパイ向け OpenCVのdebパッケージを作成・公開してますが、この記事は、自分でビルドしたい方向けの手順です。
環境
- Raspberry Pi: 3B+ / 3B / 2B
- Raspbian:
2018-11-13-raspbian-stretch-lite
- MicroSD: 16GB
手順
-
システムの準備
- Raspbian を EtcherなどでmicroSDに焼く。
-
ssh
できるように、ssh
というファイル名の、空ファイルをFAT32パーティションに作成
-
初回起動
- microSDをラズパイ本体に入れて、USB電源アダプタを挿す。
- login:
pi
/ password:raspberry
にてログイン - パッケージ更新・再起動:
sudo apt update && sudo apt upgrade -y && sudo reboot
-
初期設定
-
sudo raspi-config
- パスワード変更
- WiFi設定
などなど
-
-
OpenCVビルドの準備
-
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:~ $
-
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
-
ソースコード取得・解凍
こぴぺ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
-
-
OpenCVビルド
-
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 ..
-
ビルド開始
こぴぺOPENCV_VERSION=4.0.1 cd ~/opencv-${OPENCV_VERSION}/build make -j4
#
-j4
(4プロセス並列)でコケる場合は、-j1
でやる。python2/3向けのモジュールのリンクあたりがすごくメモリを食う。 -
待つ (寝る前に仕掛けておくとよいかも?)
-
インストール (
CMAKE_INSTALL_PREFIX
で指定した/usr/local
以下にインストールされる)こぴぺOPENCV_VERSION=4.0.1 cd ~/opencv-${OPENCV_VERSION}/build sudo make install sudo ldconfig
-
-
テスト
後ほど
その他
-
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:~ $
-
時間計測 (bashにて)
(time コマンド) 2>&1 | tee filename.log
例pi@raspberrypi:~ $ (time make -j4) 2>&1 | tee ~/build-make.log
-
アンインストール
buildフォルダにて、sudo make uninstall
で、インストールされたファイルの削除が行われるが、フォルダと、(/usr/local/lib
の)シンボリックリンクが削除されない。