OpenCV + OpenCV Contribをビルド 【Raspberry Pi OS編】

2020.07.09

OpenCV with Contrib

 

こんにちは、代表の大野です。
本ブログは、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ビルドと、
システム導入が完了していることになります。

 

お疲れ様でした。


Top