OpenCV(3.4.4)をRaspberry PI 3 B+にインストール
OpenCVのインストール方法は、以下の3つの方法で導入できます。
特に利用した機能ができるならば、1番目の方法が手軽でお勧めです。
ただし、OpenCVを使い始めると日々進化しているOpenCVを利用したくなるので、Raspberry Piでのコンパイル方法を習得していると最新バージョンなども利用出来て便利です。現時点では、Open CVのdnnではGPUサポートが出来ていなかったりと、私自身もリリースを待っている機能が存在します。
- pip/pip3でインストール
- GitHubよりソースコードをダウンロードしインストール (この記事のメイン)
- コンパイル済みバイナリをダウンロードして利用 (この記事には記載しておりません)
OpenCVをpip/pip3でインストール(バージョンはPIPバージョンレポジトリに依存)
必要ライブラリのインストール
$ sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-100
$ sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5
$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libjasper-dev
Open-CVインストール
$ sudo pip3 install opencv-python
「opencv-contrib-python」の方が、利用可能な機能が多いようです。
ただし、商用利用時に中が必要な、特徴検出アルゴリズムSIFTやSURFなどが含まれており、利用目的に合わせてた導入が必要です。
$ sudo pip3 install opencv-contrib-python
OpenCV(3.4.4)をGitHubよりソースコードをダウンロードしインストール
事前準備
インストール対象のOpen CVバージョンを変数に設定します。
cvVersion="3.4.4"
インストールに利用するフォルダを作成します。
mkdir installation
mkdir installation/OpenCV-"$cvVersion"
カレントディレクトリを変数に入れます。
cwd=$(pwd)
導入パッケージのアップデートを行います。
「sudo rpi-update」でRaspberry Piのファームウェアのアップデートを行います。
また、Expand Filesystemを設定していない人は、「raspi-config」よりExpand Filesystem(ファイルシステムの拡張)を利用するように設定してください。
sudo apt -y update
sudo apt -y upgrade
sudo rpi-update
swapfileサイズ変更
この手順前後で、「free -m」コマンドでスワップメモリサイズを確認してください。
以下の手順で、スワップサイズを1GBに拡張します。
viなどのエディタで、直接「/etc/dphys-swapfile」を編集しても良いです。
「CONF_SWAPSIZE=1024」を記載し、dphys-swapfileサービスを再起動すれば、スワップファイルサイズを変更できます。
sudo sed -i 's/CONF_SWAPSIZE=100/CONF_SWAPSIZE=1024/g' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
必要パッケージのインストール
多くのパッケージを導入する必要があります。
参考とする情報ソースにより多少違いはありますが、私が導入したライブラリ群は以下となっております。
sudo apt-get -y remove x264 libx264-dev
## Install dependencies
sudo apt-get -y install build-essential checkinstall cmake pkg-config yasm
sudo apt-get -y install git gfortran
sudo apt-get -y install libjpeg8-dev libjasper-dev libpng12-dev
sudo apt-get -y install libtiff5-dev
sudo apt-get -y install libtiff-dev
sudo apt-get -y install libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev
sudo apt-get -y install libxine2-dev libv4l-dev
cd /usr/include/linux
sudo ln -s -f ../libv4l1-videodev.h videodev.h
cd $cwd
sudo apt-get -y install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
sudo apt-get -y install libgtk2.0-dev libtbb-dev qt5-default
sudo apt-get -y install libatlas-base-dev
sudo apt-get -y install libmp3lame-dev libtheora-dev
sudo apt-get -y install libvorbis-dev libxvidcore-dev libx264-dev
sudo apt-get -y install libopencore-amrnb-dev libopencore-amrwb-dev
sudo apt-get -y install libavresample-dev
sudo apt-get -y install x264 v4l-utils
# Optional dependencies
sudo apt-get -y install libprotobuf-dev protobuf-compiler
sudo apt-get -y install libgoogle-glog-dev libgflags-dev
sudo apt-get -y install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen
# Install Python Libraries
sudo apt-get -y install python3-dev python3-pip
sudo -H pip3 install -U pip numpy
sudo apt-get -y install python3-testresources
sudo pip3 install numpy dlib
OpenCVのソースコード準備
Git HubよりOpenCVのソースコードをチェックアウト(ダウンロード)します。
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout $cvVersion
cd ..
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout $cvVersion
cd ..
OpenCVのビルドおよびコンパイル、インストール
この記事で示すコンパイルオプションは、オリジナルサイトのビルドオプションとは少し異なっております。各種ビルドオプションの説明や、失敗するビルドオプションなどは各種ブログに記載されております。個人的には、できる限りコンパイルが通りやすいビルドオプションとしております。
cd opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=OFF -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D BUILD_EXAMPLES=ON -D ENABLE_MEON=ON ..
コンパイルです。
Raspberry Pi 3B +でコンパイル実施時は、4コアすべてを使ってコンパイルしても、6-8時間程度時間を要します。Raspberry Piの動作温度もコンパイル時間に大きく影響します。
以下のコマンドは、「make -j4」となります。
make -j$(nproc)
コンパイルが無事に成功したら、インストールを実行してください。
make install
swqpfileサイズ変更(変更したサイズを元に戻す)
この手順前後で、「free -m」コマンドでスワップメモリサイズを確認してください。
以下の手順で、スワップサイズを拡張した1GBから100MBに戻します。
sudo sed -i 's/CONF_SWAPSIZE=1024/CONF_SWAPSIZE=100/g' /etc/dphys-swapfile
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
インストール後の確認
「python3」コマンドを実行し、「import cv2」「print(cv2.__version__)」で導入されたOpenCVのバージョンを確認します。
@raspberrypi:~ $ python3
Python 3.7.3 (default, Apr 3 2019, 05:39:12)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
4.1.1
最後に
当初は、結構苦労しましたが、慣れると簡単にコンパイル、インストール出来ます。OpenCVをガリガリ利用する人は、是非、自分でソースコードより導入することをお勧めします。新バージョン新バージョンでの進化が素晴らしいライブラリです。
明日の記事で、OpenCV最新バージョンの4.1.1のインストール方法を記事にします。
現時点の私のRaspberry Piに導入しているOpenCVは、「4.1.1-openvino」となります。Movidius Neural Compute Stick 2、OpenVINO™ toolkit for Raspbian* OS導入