OpenCV + OpenCV Contribをビルド 【Raspberry Pi OS編】
2020.07.09
こんにちは、代表の大野です。
本ブログは、OpenCVとOpenCV Contribを合わせ込んだビルドに関して書いていきます。
今日はRaspberryPi OS編(ラズパイ )です。
「OpenCVの導入はよくやっているけど、
OpenCV Contribも一緒にビルドして、特定のモジュールも使いたい!」
という場合には、OpenCV Contribという外部モジュールを一緒にビルドする必要があります。
その方法についてみていきます。
関連記事
OpenCV + OpenCV Contribをビルド【Windows編】
OpenCV + OpenCV Contribをビルド【RaspberryPi OS編】
OpenCV + OpenCV Contribをビルド 【iOS編】(近日公開予定)
OpenCV + OpenCV Contribをビルド 【Android編】(近日公開予定)
環境
- Raspberry Pi 4 Model B
- Raspberry Pi OS with Desktop / Raspbian 10 buster
- ARM Cortex-A72 1.50GHz / メモリ4GB
- OpenCV 4.3.0
- OpenCV Contrib 4.3.0
- CMake 3.13.4
- gcc 8.3.0
さて、そもそも論ですが、従来ラズパイ のOSは、
「Raspbian OS」という認識の方もいらっしゃるかと思いますが、
2020年05月に、「Raspberry Pi OS」に名称を変更しています。
ラズパイ も Raspberry Pi 4になってから、
メモリが2GBとか4GBとかすごいのが出てきました。
それでは早速みていきたいと思います。
必要なモジュールの導入
OpenCVをビルドおよび実行できる環境にするために、
必要最低限なモジュールを導入していきます。
まずは、ターミナル を立ち上げます。
ラズパイ ではLXTerminalという名称だと思います。
Raspberry Pi OSは、元Raspbian OSであり、
LinuxのDebian系になりますので
aptコマンドを使うことができます。
いつものごとく、apt installする前には、
updateとupgradeを行っておきましょう。
はじめての場合や、update & upgradeをしばらくやっていない場合は、
30分程度かかるかもしれません。
1 | sudo apt update |
1 | sudo apt upgrade -y |
続いてモジュールを導入します。
1 | sudo apt install cmake libgtk2.0-dev libjpeg-dev libpng-dev -y |
上記は、最低限のモジュールを導入しただけですが、
必要に応じて他のものも
インストールしていただいても構いません。
いつもは、build-essentialなどを入れる必要がありましたが、
Raspberry Pi OSに標準で搭載されているようになっているのか
すでに入っているような感じでした。
gitも必要ですが、
すでに入っていたようなので、省略します。
OpenCVソース / OpenCV Contribソースの取得
OpenCVはソースからビルドすることになりますが、
GitHubにソースが上がっていますので、
そちらから取得することにします。
本記事を執筆時点では、
OpenCV4.3.0が最新となっていますので、
git cloneでも持ってこれますが、
一応バージョンを明確にするためにも、
4.3.0ソースを指定して、
wgetコマンドで引っ張ってきます。
ビルド場所は、
「opencv_build」
というディレクトリを用意しました。
1 2 | mkdir opencv_build cd opencv_build/ |
それでは、OpenCVから取得していきます。
OpenCV Contribと圧縮ファイル名がかぶってしまうため、
ファイル名を指定しておきます。
1 | $ wget https://github.com/opencv/opencv/archive/4.3.0.tar.gz -O opencv.tar.gz |
続いてOpenCV Contribも
同じ要領で引っ張ってきます。
1 | $ wget https://github.com/opencv/opencv_contrib/archive/4.3.0.tar.gz -O opencv_contrib.tar.gz |
ダウンロードが終わったら、
2つとも解凍しておきます。
1 2 | $ tar -xvf opencv.tar.gz $ tar -xvf opecv_contrib.tar.gz |
tarコマンドでアーカイブを解凍すると、
opencv-4.3.0およびopencv_contrib-4.3.0
というディレクトリが生成され、
それぞれのディレクトリの中に、
OpenCVとOpenCV Contribのソースが
格納されていることがわかります。
CMakeによるMakefile生成
それでは早速ビルドを行いますが、
LinuxでのOpenCV Contribをおり混ぜたビルドは、
非常に簡単です。
CMakeというビルドツールを使って、
Makefileを自動生成し、
makeコマンドでビルド完了です。
早速CMakeから行いますが、
今日は、opencv-4.3.0のディレクトリの中に
build/ディレクトリを作ることにして、
その中にビルドソースを格納していきましょう。
1 2 3 4 | cd opencv-4.3.0/ mkdir build cd build/ cmake -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.3.0/modules .. |
ポイントは、cmakeのオプション(-Dの部分)に、
OpenCV Contribの場所を指定するところです。
こちらは間違えると、
OpenCVのみのビルドになってしまったりするので
注意してください。
OPENCV_EXTRA_MODULES_PATHという変数に、
OpenCV Contribの場所を、相対パスで指定するのですが、
modulesまでを指定するところに注意してください。
また、wgetで引っ張ってきたOpenCV Contribの、
解凍後のディレクトリ名が異なる場合は、
それに合わせて修正をしてください。
以下の通り、
「Configure done」
「Generating done」
が表示されていれば完了です。
buildディレクトリに
Makefileが生成されていると思います。
makeコマンドによるビルド
最後にビルドコマンドであるmakeです。
クアッドコアと噂のRaspberry Pi 4 を信じて
j4で行ってみます。
所要時間は、筆者では約1時間でした。
気長にお待ちください。
1 | make -j4 |
以前はメモリが少ないラズパイ だと、
メモリ不足でビルドが途中で止まってしまう
などもありましたが、
ここまでのスペックになると非常に安心です。
上記の通り、エラーなく
100%までビルドが無事完了したら、
システムにインストールしておきます。
1 2 | $ sudo make install $ sudo ldconfig |
以上で、ビルド自体は完了です。
最後に、ちゃんとOpenCV Contrib込みの状態で
ビルドされているかを確認しておきます。
以下のコマンドで、
システムにインストールされたOpenCVの、
インクルードファイル一式が入っているディレクトリが開きます。
1 | xdg-open /usr/local/include/opencv4/opencv2/ |
この中に、OpenCV Contribモジュールの一つである、
face/が入っていれば、
無事OpenCV Contrib入りのOpenCVビルドと、
システム導入が完了していることになります。
お疲れ様でした。
↓↓↓ぜひチェックしてください
~提供中のヒューマンセンシング技術~
◆人物検出技術
歩行者・来店者数計測やロボット搭載も
https://humandetect.pas-ta.io
◆視線検出技術
アイトラッキングや次世代UIに
https://eyetrack.pas-ta.io
◆生体判定技術
eKYC・顔認証のなりすまし対策を!
https://bio-check.pas-ta.io
◆目検出技術
あらゆる目周りデータを高精度に取得
https://pupil.pas-ta.io
◆音声感情認識技術
会話から怒りや喜びの感情を判定
https://feeling.pas-ta.io
◆虹彩認証技術
目の虹彩を利用した生体認証技術
https://iris.pas-ta.io