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

        
        
        
        
        
        
        






