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導入