OpenCV 2.4.13 と 3.1 を共存させる

OpenCVの勉強のためにインストールしてみました。

Ubuntu14.04では公式リポジトリからapt-getにてOpenCV2.4.8をインストール可能ですが、2.x系と3.x系を混在させたかったのでソースからインストールします。

試した環境は以下の通りです。

OS等 :Ubuntu-14.04 64bit Desktop@WMWare
バージョン:2.4.13, 3.1
その他 :TBB有効、CUDA無効

基本的な手順はここの受け売りになります。


関連パッケージのインストール

$ sudo apt-get -y install build-essential cmake git libgtk2.0-dev pkg-config python-dev python-numpy libdc1394-22 libdc1394-22-dev libjpeg-dev libpng12-dev libtiff4-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev libqt4-dev libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils unzip


OpenCVパッケージのアンインストール

$ sudo apt-get purge libopencv*

公式ページから2.4.133.1.0をダウンロード。


インストールディレクトリの作成。ここでは、ユーザのローカル(~/libs)に作成しています。

$ mkdir ~/libs


OpenCV 2.4.13のインストール。3.xむけのオプションも付加していますが、無視されます。

$ unzip opencv-2.4.13.zip
$ mv opencv-2.4.13 ~/libs/.
$ mkdir ~/libs/OpenCV2.4.13/release
$ cd ~/libs/OpenCV2.4.13/release
$ mkdir installed
$ cmake -D CMAKE_INSTALL_PREFIX=~/libs/opencv-2.4.13/release/installed -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_FFMPEG=OFF -D BUILD_opencv_python2=ON ..
$ make install


同様に3.1.0もインストールします。

# Install OpenCV 3.1.0
$ unzip opencv-3.1.0.zip
$ mv opencv-3.1.0 ~/libs/.
$ mkdir ~/libs/OpenCV3.1.0/release
$ cd ~/libs/OpenCV3.1.0/release
$ mkdir installed
$ cmake -D CMAKE_INSTALL_PREFIX=~/libs/opencv-3.1.0/release/installed -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_FFMPEG=OFF -D BUILD_opencv_python2=ON ..
$ make install

次にpkg-configを利用して、ライブラリのパス等を通します。設定ファイルはインストール先に作成されますが、多少変更が必要だったはずです。
作業したのが2週間前なので、変更箇所は忘れました。。


2.4.13のpkg-config設定ファイルです。

$ vim ~/libs/opencv-2.4.13/release/installed
# Package Information for pkg-config

prefix=~/libs/opencv-2.4.13/release/installed
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 2.4.13
Libs: -L${exec_prefix}/lib -lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml -lopencv_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab -ltbb -lrt -lpthread -lm -ldl
Cflags: -I${includedir_old} -I${includedir_new}


同様に、3.1.0のpkg-config設定ファイルです。

$ vim ~/libs/opencv-3.1.0/release/installed
# Package Information for pkg-config

prefix=~/libs/opencv-3.1.0/release/installed
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
libdir3rd=${exec_prefix}/share/OpenCV/3rdparty/lib
includedir_old=${prefix}/include/opencv
includedir_new=${prefix}/include

Name: OpenCV
Description: Open Source Computer Vision Library
Version: 3.1.0
Libs: -L${exec_prefix}/lib -L${libdir3rd} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lippicv -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann -lopencv_core
Libs.private: -L/usr/lib/x86_64-linux-gnu -lpng -lz -ltiff -ljasper -ljpeg -lImath -lIlmImf -lIex -lHalf -lIlmThread -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lfreetype -lgstvideo-0.10 -lgstapp-0.10 -lgstbase-0.10 -lgstriff-0.10 -lgstpbutils-0.10 -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lxml2 -lglib-2.0 -ldc1394 -lv4l1 -lv4l2 -ldl -lm -lpthread -lrt -ltbb
Cflags: -I${includedir_old} -I${includedir_new}


コンパイル前にパスを通すための設定ファイルを作成します。2.4.13用の設定ファイルを以下の通りです。

$ vim setting-cv-2.4.13.sh
#! /bin/bash

CV_LIB_PATH=~/libs/opencv-2.4.13/release/installed/lib
export PKG_CONFIG_PATH=$CV_LIB_PATH/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$CV_LIB_PATH:$LD_LIBRARY_PATH


同様に3.1.0用の設定ファイルを作成します。

$ vim setting-cv-3.1.0.sh
#! /bin/bash

CV_LIB_PATH=~/libs/opencv-3.1.0/release/installed/lib
export PKG_CONFIG_PATH=$CV_LIB_PATH/pkgconfig:$PKG_CONFIG_PATH
export LD_LIBRARY_PATH=$CV_LIB_PATH:$LD_LIBRARY_PATH


次回は、サンプルデザインで実行してみます。