Raspberry PiにOpenCVをインストールする

Raspberry PiでOpenCVが使用できるようにします。最新のバージョンが欲しいのでapd-getせずに自前でビルドします。

必要なものをいれる

事前準備で以下のコマンドを必要なものをいれておきます。

$ sudo apt-get install build-essential
$ sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev

OpenCVを入手する

入手したOpenCVの作業ディレクトリ(インストールディレクトリではないです)は
/home/pi/Library/opencv
とします。
端末のカレントディレクトリを移動しておいてください。

OpenCVのダウンロード先はOpenCVのgithubからzipファイルを探してきます。
https://github.com/opencv
以下のコマンドでzipファイルを入手して、作業ディレクトリにおいて解凍します。
gitのクローンを作成しても可です。追加機能も利用するため、opencv_contribもダウンロードします。

$ wget -O opencv.zip https://github.com/opencv/opencv/archive/4.4.0.zip
$ unzip opencv.zip
$ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.4.0.zip
$ unzip opencv_contrib

アドレスはバージョンによって変更される可能性がありますので、現在のものをgithubから調べて入力してください。

cmake

作業ディレクトリの/oepncvに入り、buildという名前のディレクトリを作って中に入ります。
下記コマンドを実行してください。

$ cd opencv
$ mkdir build
$ cd build

以下のコマンドでcmakeを開始します。

$ cmake .. -DOPENCV_EXTRA_MODULES_PATH=$HOME/Library/opencv/opencv_contrib-4.4.0/modules -DCMAKE_INSTALL_PREFIX=/usr

oepncv_contribのパスはバージョンにより適宜変更してください。

make

下記コマンドでmakeします。makeは時間がかかります。Raspberry Pi 4で2~3時間ぐらい?

$ make -j4

makeが正常終了したら下記コマンドでインストールします。
インストール先はcmakeのオプションで入力した -DCMAKE_INSTALL_PREFIX の値になります。

$ sudo make install

動作確認

適当な場所で、cvtest.cppというファイルを作ります。

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgcodecs.hpp>

int main() {
     cv::Mat m = cv::imread("sample.png", 1);
     cv::namedWindow("sample", cv::WINDOW_AUTOSIZE);
     cv::imshow("sample", m);
     cv::waitKey(0);
     cv::destroyAllWindows();

       return 0;
 } 

下記コマンドでビルドします。
Includeを通すため、IオプションにはOpenCVをインストールしたディレクトリを指定する。(cmakeで指定したディレクトリ)

$ g++ cvtext.cpp -std=c++11 -I /usr/include/opencv4 -lopencv_core -lopencv_imgcodecs -lopencv_highgui

同じフォルダに適当なsample.pngをおいて実行します。

$ ./a.out

参考サイト

http://ssr-yuki.hatenablog.com/entry/2018/05/14/022802
https://qiita.com/takahiro_itazuri/items/a67dd3bb7f5f88ca9dd8
https://qiita.com/DQNEO/items/4e5c2eca2761ec08b922

作成:松林雄一