トップページ -> 実践知識 -> OpenCV の使用法 -> Linux で OpenCV バージョン 2.4.10 のダウンロードとビルドとインストールとテスト実行
[サイトマップへ]  

Linux で OpenCV バージョン 2.4.10 のダウンロードとビルドとインストールとテスト実行

サイト構成 連絡先,業績など 実践知識 データの扱い コンピュータ 教材 サポートページ

OpenCV (Open Computer Vision Library) とは, 実時間コンピュータビジョン (real time computer vision) の アルゴリズムと文書とサンプルコードの集まり.

この Web ページでは,Linux (Ubuntu) での OpenCV バージョン 2.4.10のビルドとインストール手順を図解等で説明する.

この Web ページでは、以下,次の2通りの手順について説明している

末尾にはサンプルプログラムのソースコードと動作手順も付けています。

Ubuntu での Intel TBB (Intel Threading Building Blocks) インストール手順は, 別の Web ページで説明している.

※ 参考 Web ページ: http://opencv.jp/


Ubuntu で OpenCV バージョン 2.4.10 のダウンロードとビルドとインストールを行うシェルスクリプト

楽をしたいのでシェルスクリプトを作りました。 Ubuntu で下記のシェルスクリプトを実行すると、 OpenCV バージョン 2.4.10 のダウンロードとビルドとインストールが行われます. Ubuntu 12.04 を用いて動作確認済みです.

※ 1つ1つコマンドを入力したい(シェルスクリプトにしたくない)場合については、この Web ページの下で説明している。

# 最初は前提ソフトウエアのインストール
sudo apt-get -yV install build-essential
sudo apt-get -yV install libboost1.46-all-dev 
#
cd /tmp; sudo apt-get source opencv
sudo apt-get -yV build-dep opencv 
# 
sudo apt-get -yV install libqt4-dev 
sudo apt-get -yV install libgtk2.0-dev 
sudo apt-get -yV install pkg-config 
#
sudo apt-get -yV install opencl-headers 
# 
sudo apt-get -yV install libgomp1
# 
sudo apt-get -yV install libjpeg-dev
sudo apt-get -yV install libopenjpeg-dev
sudo apt-get -yV install jasper
sudo apt-get -yV install libjasper-dev libjasper-runtime
sudo apt-get -yV install libpng12-dev
sudo apt-get -yV install libpng++-dev libpng3
sudo apt-get -yV install libpnglite-dev libpngwriter0-dev libpngwriter0c2
sudo apt-get -yV install libtiff-dev libtiff-tools pngtools
sudo apt-get -yV install zlib1g-dev zlib1g-dbg
sudo apt-get -yV install v4l2ucp
#
sudo apt-get -yV install python2.7
sudo apt-get -yV install python2.7-dev
sudo apt-get -yV install autoconf
sudo apt-get -yV install libtbb2 libtbb-dev
sudo apt-get -yV install libeigen2-dev
sudo apt-get -yV install cmake
sudo apt-get -yV install openexr
sudo apt-get -yV install gstreamer-plugins-*
sudo apt-get -yV install freeglut3-dev
sudo apt-get -yV install libglui-dev
sudo apt-get -yV install libavc1394-dev libdc1394-22-dev libdc1394-utils
# ビデオ関係のパッケージ 
sudo apt-get -yV install libxine-dev
sudo apt-get -yV install libxvidcore-dev 
sudo apt-get -yV install libva-dev
sudo apt-get -yV install libssl-dev
sudo apt-get -yV install libv4l-dev
sudo apt-get -yV install libvo-aacenc-dev
sudo apt-get -yV install libvo-amrwbenc-dev 
sudo apt-get -yV install libvorbis-dev 
sudo apt-get -yV install libvpx-dev
# OpenNI2
sudo apt-get -yV install libopenni2-dev 

cd /tmp
if [ ! -f OpenCV-2.4.10.zip ]; then 
    wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.10/opencv-2.4.10.zip
fi 

sudo rm -rf opencv-2.4.10
unzip /tmp/opencv-2.4.10.zip
cd opencv-2.4.10
cmake -DBUILD_DOCS=ON -DBUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=RELEASE -DWITH_TBB=ON -DWITH_GTK=ON -DWITH_OPENGL=ON -DWITH_QT=ON -DINSTALL_C_EXAMPLES=ON -DWITH_OPENCL=OFF -DWITH_CUDA=OFF -DWITH_OPENNI=ON -DWITH_UNICAP=ON -DWITH_V4L=ON -DWITH_XINE=ON  .
make
sudo make install
sudo /sbin/ldconfig

OpenCV のサンプルプログラムは、このWebページの末尾につけています.


Linux で, コマンドを手入力して,OpenCV バージョン 2.4.10 のソースコードのダウンロードとビルドとインストールを行う場合の手順 (Ubuntu や Fedora を使用)

前準備

Ubuntu 12.04 の場合の操作手順(例)

Ubuntu の他のバージョンでも同様の手順になります

  1. アップデート操作

    sudo apt-get -yV update
    sudo apt-get -yV upgrade
    sudo reboot
    

  2. ビルドに必要となる前提ソフトウエアのインストール 

    「apt-get build-dep」を使うと簡単.

    sudo apt-get -yV install build-essential
    sudo apt-get -yV install libboost1.46-all-dev 
    #
    cd /tmp; sudo apt-get source opencv
    sudo apt-get -yV build-dep opencv 
    # 
    sudo apt-get -yV install libqt4-dev 
    sudo apt-get -yV install libgtk2.0-dev 
    sudo apt-get -yV install pkg-config 
    # 
    sudo apt-get -yV install opencl-headers 
    # 
    sudo apt-get -yV install libjpeg-dev
    sudo apt-get -yV install libopenjpeg-dev
    sudo apt-get -yV install jasper
    sudo apt-get -yV install libjasper-dev libjasper-runtime
    sudo apt-get -yV install libpng12-dev
    sudo apt-get -yV install libpng++-dev libpng3
    sudo apt-get -yV install libpnglite-dev libpngwriter0-dev libpngwriter0c2
    sudo apt-get -yV install libtiff-dev libtiff-tools pngtools
    sudo apt-get -yV install zlib1g-dev zlib1g-dbg
    sudo apt-get -yV install v4l2ucp
    #
    sudo apt-get -yV install python2.7
    sudo apt-get -yV install python2.7-dev
    sudo apt-get -yV install autoconf
    sudo apt-get -yV install libtbb2 libtbb-dev
    sudo apt-get -yV install libeigen2-dev
    sudo apt-get -yV install cmake
    sudo apt-get -yV install openexr
    sudo apt-get -yV install gstreamer-plugins-*
    sudo apt-get -yV install freeglut3-dev
    sudo apt-get -yV install libglui-dev
    sudo apt-get -yV install libavc1394-dev libdc1394-22-dev libdc1394-utils
    # ビデオ関係のパッケージ 
    sudo apt-get -yV install libxine-dev
    sudo apt-get -yV install libxvidcore-dev 
    sudo apt-get -yV install libva-dev
    sudo apt-get -yV install libssl-dev
    sudo apt-get -yV install libv4l-dev
    sudo apt-get -yV install libvo-aacenc-dev
    sudo apt-get -yV install libvo-amrwbenc-dev 
    sudo apt-get -yV install libvorbis-dev 
    sudo apt-get -yV install libvpx-dev
    # OpenNI2 
    sudo apt-get -yV install libopenni2-dev 
    

Fedora 15 の場合の操作手順(例)

  1. アップデート操作

    sudo yum check-update
    sudo yum update
    sudo reboot
    

  2. ビルドに必要となる前提ソフトウエアのインストール 

    python, gtk+ などのインストールを行う

    yum install gcc
    yum install g++
    yum install python
    yum install gtk+-devel
    yum install libjpeg-devel
    yum install libtiff-devel
    yum install jasper-devel
    yum install libpng-devel
    yum install zlib-devel
    # 4 エル 2
    yum install v4l2*
    yum install totem
    yum install xine
    yum install unicap-devel
    yum install autoconf
    

OpenCV のダウンロードとビルトとインストール手順

  1. Web ページを開く

    http://sourceforge.net/projects/opencvlibrary/

  2. Files」をクリック

  3. opencv-unix」をクリック

  4. 最新版である「2.4.10」をクリック

  5. opencv-2.4.10.zip をクリックして、ダウンロード。

  6. ダウンロードと展開

    以下の操作はコンソールで行う(以下、画面キャプチャは Ubuntu 12.04 のもの)

    ※ ダウンロードしたファイルを /tmp に置いているものとする

    cd /tmp
    unzip opencv-2.4.10.zip
    

    ※ tar.gz 形式のファイルをダウンロードしたときは次のような手順になる

    cd /tmp
    tar -xvzof /tmp/opencv-2.4.10.tar.gz
    

  7. (オプション) 「ccmake .」を実行して,設定を確認する
    cd /tmp/opencv-2.4.10
    ccmake .
    

  8. 「cmake .」の実行

    ◆実行例

    参考 Web ページ: 「-DBUILD_SHARED_LIBS=OFF」については、http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html

    cd /tmp/opencv-2.4.10 
    cmake -DCMAKE_BUILD_TYPE=RELEASE \
        -DBUILD_DOCS=ON -DBUILD_EXAMPLES=ON -DBUILD_SHARED_LIBS=ON -DBUILD_PYTHON_SUPPORT=ON \
        -DINSTALL_C_EXAMPLES=ON -DINSTALL_PYTHON_EXAMPLES=ON \
        -DENABLE_FAST_MATH=ON -DENABLE_SSE=ON -DENABLE_SSE2=ON -DENABLE_SSE3=ON -DENABLE_SSSE3=ON -DENABLE_SSE41=ON -DENABLE_SSE42=ON  \
        -DWITH_TBB=ON -DWITH_GTK=ON -DWITH_OPENGL=ON -DWITH_QT=ON -DWITH_OPENCL=OFF -DWITH_CUDA=OFF -DWITH_OPENNI=ON -DWITH_UNICAP=ON -DWITH_V4L=ON -DWITH_XINE=ON  .
    

  9. cmake . の結果の確認

  10. make の実行

    make
    

  11. make の結果の確認

    エラーメッセージが出ていないこと

    ※ make のときにエラーが出たら 「cmake .」のところに戻って cmake のパラメータを調整して、もう1度繰り返す。

  12. sudo make install の実行

    sudo make install
    

  13. sudo make install の結果の確認

    ※ エラーメッセージが出ていないこと

  14. sudo /sbin/ldconfig の実行


試しに OpenCV を使ってみる

画像ファイルの読み込みと表示

◆プログラムの例

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

using namespace cv;

int main( int argc, char** argv )
{
  Mat rgb;

  rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 );
  namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO );
  imshow( "Display Image", rgb );

  waitKey(0);

  return 0;
}

◆コンパイルコマンドの例

Linux の場合を示している.

g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_core

◆ 実行結果の例 (OpenCV バージョン 2.4.9 で実行)

./a.out

カラー画像の濃淡画像への変換

◆プログラムの例

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

using namespace cv;

int main( int argc, char** argv )
{
  Mat rgb, gray; 

  rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 );
  cvtColor(rgb, gray, CV_BGR2GRAY);

  namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO );
  imshow( "Display Image", gray );

  waitKey(0);

  return 0;
}

◆コンパイルコマンドの例

Linux の場合を示している.

g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core

◆ 実行結果の例 (OpenCV バージョン 2.4.9 で実行)

./a.out

dilate, erode の例

◆プログラムの例

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

using namespace cv;

int main( int argc, char** argv )
{
  Mat rgb, hsv, hsv2, rgb2;

  rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 );
  cvtColor(rgb, hsv, CV_BGR2HSV);
  dilate(hsv, hsv2, Mat(), Point(-1,-1), 8); 
  cvtColor(hsv2, rgb2, CV_HSV2BGR);

  namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO );
  imshow( "Display Image", rgb2 );

  waitKey(0);

  return 0;
}

◆コンパイルコマンドの例

Linux の場合を示している.

g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core

◆ 実行結果の例 (OpenCV バージョン 2.4.9 で実行)

./a.out

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

using namespace cv;

int main( int argc, char** argv )
{
  Mat rgb, hsv, hsv2, rgb2;

  rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 );
  cvtColor(rgb, hsv, CV_BGR2HSV);
  erode(hsv, hsv2, Mat(), Point(-1,-1), 8); 
  cvtColor(hsv2, rgb2, CV_HSV2BGR);

  namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO );
  imshow( "Display Image", rgb2 );

  waitKey(0);

  return 0;
}

◆コンパイルコマンドの例

Linux の場合を示している.

g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core

◆ 実行結果の例 (OpenCV バージョン 2.4.9 で実行)

./a.out

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

using namespace cv;

int main( int argc, char** argv )
{
  Mat rgb, hsv, hsv2, rgb2, hsv3, rgb3; 

  rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 );
  cvtColor(rgb, hsv, CV_BGR2HSV);
  erode(hsv, hsv2, Mat(), Point(-1,-1), 8); 
  dilate(hsv2, hsv3, Mat(), Point(-1,-1), 8); 
  cvtColor(hsv3, rgb3, CV_HSV2BGR);

  namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO );
  imshow( "Display Image", rgb3 );

  waitKey(0);

  return 0;
}


◆コンパイルコマンドの例

Linux の場合を示している.

g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core

◆ 実行結果の例 (OpenCV バージョン 2.4.9 で実行)

./a.out

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

using namespace cv;

int main( int argc, char** argv )
{
  Mat rgb, hsv, hsv2, rgb2, hsv3, rgb3; 

  rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 );
  cvtColor(rgb, hsv, CV_BGR2HSV);
  dilate(hsv, hsv2, Mat(), Point(-1,-1), 8); 
  erode(hsv2, hsv3, Mat(), Point(-1,-1), 8); 
  cvtColor(hsv3, rgb3, CV_HSV2BGR);

  namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO );
  imshow( "Display Image", rgb3 );

  waitKey(0);

  return 0;
}


◆コンパイルコマンドの例

Linux の場合を示している.

g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core

◆ 実行結果の例 (OpenCV バージョン 2.4.9 で実行)

./a.out

Opening と Closing によるノイズ除去

◆プログラムの例

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

using namespace cv;

int main( int argc, char** argv )
{
  Mat rgb, hsv, hsv2, hsv3, rgb3;

  rgb = imread( "/usr/local/share/OpenCV/samples/c/fruits.jpg", /* 3-channel color image */ 1 );
  cvtColor(rgb, hsv, CV_BGR2HSV);
  morphologyEx(hsv, hsv2, MORPH_OPEN, getStructuringElement(MORPH_ELLIPSE, Size(8, 8) ) ) ;
  morphologyEx(hsv2, hsv3, MORPH_CLOSE, getStructuringElement(MORPH_ELLIPSE, Size(8, 8) ) ) ;
  cvtColor(hsv3, rgb3, CV_HSV2BGR);

  namedWindow( "Display Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO );
  imshow( "Display Image", rgb3 );

  waitKey(0);

  return 0;
}

◆コンパイルコマンドの例

Linux の場合を示している.

g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_highgui -lopencv_imgproc -lopencv_core

◆ 実行結果の例 (OpenCV バージョン 2.4.9 で実行)

./a.out