環境設定 - OpenCV 2.4 & OpenCV 3.1 & OpenCV 2.2
OpenCV のビルドとインストール
自分の環境には ROS Kinetic Kame を入れているので,すでに opencv3 のライブラリが一部インストールされている.ただ,開発を進めていくうえでバイナリパッケージのみでなくソースを見たくなる時があるので OpenCV2.4 と OpenCV3.1 をソースビルドしてローカルにインストールした.以下にその手順をまとめておく.(Graph Cut Stereo を試してみたかったので,あとから OpenCV2.2 もインストール.)
OpenCV ダウンロード
以下,ダウンロード先リンク.下記からほしいバージョンを選んでダウンロードする.
github.com
OpenCV Non Free モジュールのダウンロード
一部新しいライブラリや特許で抑えられている特徴量の計算ライブラリ等は別のリポジトリで管理されているみたい.自分は必要になるので下記のリンク先からダウンロードした.
github.com
自分は下記の 3 つのバージョンをダウンロードしてきた.
パッケージの解凍
$ cd ~/workspace/reps/ $ unzip opencv-2.4.13.zip $ unzip opencv-3.1.0.zip $ unzip opencv_contrib-master.zip $ unzip opencv-2.2.zip
cmake の実行.(OpenCV2.2 は古いので,コンパイルを通すために変更が必要でした.詳しくは本エントリの最後を参照のこと.)
$ cd ~/workspace/reps/opencv-2.4.13 $ mkdir build install $ cd build $ cmake -D CMAKE_INSTALL_PREFIX=/home/koichi/workspace/reps/opencv-2.4.13/install -DBUILD_EXAMPLES=ON -DINSTALL_C_EXAMPLES=ON -DWITH_OPENGL=ON -DWITH_V4L=ON -DWITH_QT=ON .. $ $ cd ~/workspace/reps/opencv-3.1.0 $ mkdir build install $ cd build $ cmake -DCMAKE_INSTALL_PREFIX=../install -DBUILD_EXAMPLES=ON -DINSTALL_C_EXAMPLES=ON -DWITH_OPENGL=ON -DWITH_V4L=ON -DWITH_GSTREAMER=ON -DWITH_QT=ON -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DWITH_CUDA=YES -DCUDA_GENERATION=Auto -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/ ../opencv make install -j8 $ $ cd ~/workspace/reps/opencv-2.2 $ mkdir build install $ cmake -D CMAKE_INSTALL_PREFIX=/home/koichi/workspace/reps/opencv-2.2/install -DBUILD_EXAMPLES=ON -DINSTALL_C_EXAMPLES=ON -DWITH_OPENGL=ON -DWITH_V4L=ON -DWITH_QT=ON -DWITH_FFMPEG=OFF .. $
ビルド & インストールの実行.
$ cd ~/workspace/reps/opencv-2.4.13/build $ make install $ $ cd ~/workspace/reps/opencv-3.1.0/build $ make install $ $ cd ~/workspace/reps/opencv-2.2/build $ make install
上記のようにインストールすれば, "install/share/OpenCV" 配下に CMake の config ファイルが作成されるので, CMake を使ってビルドする場合はこの Config ファイルを指定してビルドすれば必要なパス等を読み込んでくれる.
OpenCV2.2 の変更点
-
- 1. opencv-2.2/cvconfig.h.cmake
L22, L23 に下記を追記.
/* V4L/V4L2 capturing support via libv4l */ #cmakedefine HAVE_LIBV4L
-
- 2. opencv-2.2/modules/highgui/src/cap.cpp
L174 の下記の記述を削除し,代わりにその下の記述を追記する.
#if defined (HAVE_CAMV4L) || defined (HAVE_CAMV4L2)
#if defined HAVE_LIBV4L || (defined (HAVE_CAMV4L) && defined (HAVE_CAMV4L2))
-
- 3. opencv-2.2/modules/highgui/src/cap.cpp
削除 L227
#if !defined WIN32 && defined HAVE_CAMV4L && defined HAVE_CAMV4L2
追記 L227
#if !defined WIN32 && defined HAVE_LIBV4L
追記 L244
#ifdef HAVE_CAMV4L
追記 L246, L247
#endif #ifdef HAVE_CAMV4L2
追記 L249
#endif
-
- 4. opencv-2.2/modules/highgui/src/window_QT.cpp
削除 L308
usleep(1000);
追記 L308
struct timespec req; req.tv_sec = (time_t)0; req.tv_nsec = 1000000; nanosleep(&req, NULL);
-
- 5. opencv-2.2/modules/highgui/src/cap_v4l.cpp
削除 L217
#include <linux/videodev.h>
追記 L217
#include <libv4l1-videodev.h>