Raspberry PiでOpenCV3をビルド
2017年9月、Raspberry PiでOpenCV3をビルドしました。USBカメラを接続して、簡単なPythonスクリプトでカメラ画像を表示することができました。
Raspberry PiでOpenCVパッケージをインストールすると、OpenCVのバージョンは、2.4.9.1 となりました。
ARM NEONの最適化を行った OpenCV3を使用するために、OpenCV3.3.0のソースからビルドしました。
OSバージョンを調べます。
$ uname -a Linux pi3 4.9.41-v7+ #1023 SMP Tue Aug 8 16:00:15 BST 2017 armv7l GNU/Linux $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 9.1 (stretch) Release: 9.1 Codename: stretch
開発ツールとライブラリのインストール
開発ツールパッケージをインストールします。
$ sudo apt-get update $ sudo apt-get install build-essential cmake pkg-config cmake-qt-gui
画像入出力パッケージをインストールします。
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev $ sudo apt-get install libxvidcore-dev libx264-dev
OpenCVソースコードの取得
OpenCVリポジトリーから、OpenCV 3.3.0の Source code (tar.gz)をダウンロードして展開します。
$ wget https://github.com/opencv/opencv/archive/3.3.0.tar.gz $ tar -zxvf 3.3.0.tar.gz opencv-3.3.0/ ・・・
OpenCVのビルド
ソースコードを展開した opencv-3.3.0 のディレクトリに入り、ビルド用の build ディレクトリを作成します。
$ cd opencv-3.3.0 $ mkdir build $ cd build
cmake-gui を起動します。
$ cmake-gui
[Browse Source…]ボタンで、ソースコードディレクトリ、[Browsw Build…]ボタンでビルド用ディレクトリを指定します。
- Where is the source code : ソースコードのディレクトリ
- Where to build the binaries : ビルド用ディレクトリ
[Configure]ボタンを押します。
CMakeSetup 画面で、「Specify the generator for this project」 で、「Unix Makefile」を指定します。「Use default native compilers」を選択します。
[Finish]ボタンを押して、Configureを開始します。
Configureが終了すると、オプション一覧が表示されます。
オプションを選択します。
- Serach: に「neon」を入力して、「ENABLE_NEON」をチェックします。
- Serach: に「vfp」を入力して、「ENABLE_VFP3」をチェックします。
- CPU_BASELINE_DISABLE」を空欄にします。
オプションを変更したので、もう一度 [Configure]ボタンを押します。
Configureが終了します。
[Generate]ボタンを押して Makefile の生成を行います。
Generating が終了したら、cmake-guiを終了させます。
OpenCVをビルドして、インストールします。ビルドは、「-j4」オプションを指定で並列実行するジョブの個数を指定します。
$ make -j4 $ sudo make install
サンプルによる動作確認
Pythonのサンプルコードで、カメラ画像表示の動作確認をします。
$ cd ../samples/python $ ./video.py
カメラ画像表示のスクリプト
以前に作成した Pythonスクリプトで動作確認します。
$ cat caminput.py #!/usr/bin/python # -*- coding: utf-8 -*- import cv2 print(cv2.__version__) cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() cv2.imshow('Capture',frame) key = cv2.waitKey(1) if key & 0x00FF == ord('q'): break # When everything done, release the capture cap.release() cv2.destroyAllWindows()
OpenCVのバージョンを表示すると「3.3.0」になりました。
まとめ
OpenCV 3.3.0 のソースコードをビルドして、OpenCV3をインストールしました。ビルドは時間を要しますが、最新のOpenCVを使用することができます。