Yamamoto's Laboratory
設定

インストールと確認

インストール

Ubuntu 14.04 で OpenCV を使うために,「Ubuntu14.04にOpenCVをインストールする」に従い設定を行いました.インストール用の shell が github で公開されているようです.

  1. まずは,インストール用の Sell を入手します.
    $ git clone https://github.com/jayrambhia/Install-OpenCV.git
  2. インストールシェルのあるディレクトリーに移動し,インストールコマンドを実行します.
    $ cd Install-OpenCV/Ubuntu
    $ ./opencv_latest.sh
    途中で,パスワードなどの聞かれますが,適当に答えます.

以上で,インストールというか設定は終わりです.

確認

インストールを確認するために,OpenCV - Community Help Wiki に掲載されているログラムを実行させます.ここには,様々なプログラミング言語で書かれた OpenCV のサンプルプログラムがあります.リスト1に示す C++ のサンプルプログラムをコンパイル,実行します.ただし,これは元のサンプルの図のパス「./sea.jpg」を書き換えています.このプログラムは,パスで指定された画像ファイルを表示するだけの簡単なサンプルです.

C++のサンプルプログラム (opencvtest.cpp)

01   #include<opencv2/highgui/highgui.hpp>
02   
03   int main()
04   {
05   
06     cv::Mat img = cv::imread("../sea.jpg", CV_LOAD_IMAGE_COLOR);
07     cv::imshow("opencvtest", img);
08     cv::waitKey(0);
09   
10       return 0;
11   }

このプログラムの動作は,次のとおりです.

行番号 動作の説明
001 ヘッダーファイル「opencv.hpp」をインクルードすることで,様々な OpenCV のヘッダーファイルがインクルードされます.
006 「cv::Mat」は,マトリックスのクラスです.画像を入れることができます.「cv::imread」で画像を読み込みます.第一引数は画像ファイルへのパス,第二引数は画像の読み込みフラグです.
007 画像を表示します.「cv::imshow」の第一引数はウインドウの名前,第二引数は表示させる画像です.
008 キー入力を待ちます.「cv::waitKey」の引数は,整数のキー入力待ち時間 [ミリ秒] です.0は無限の入力待ち時間となり,処理を一時スリープするために使います.

コンパイルのコマンドは,以下のとおりです.

$ g++  -ggdb  `pkg-config --cflags opencv`  -o  `basename opencvtest.cpp .cpp`  opencvtest.cpp  `pkg-config --libs opencv`

無事コンパイルができたら,実行します.

$ ./opencvtest

すると,図1が表示されます.何かキーボードのキーを押すとプログラムは停止します.

OpenCV のテスト
図1: OpenCV のテスト

コンパイルを簡単に

OpenCV を使った C や C++ プログラムのコンパイルを簡単にする方法が,「OpenCV - Community Help Wiki」に書かれています.bash script を使っています.ここでは,Makefile を使います.私はプロのプログラマーではないのでちょっといい加減ですが,次のような Makefile で実行ファイルを作ることができます.

OpenCV のソースファイルをコンパイルする Makefile

001   #-------------- basic settings ---------------
002   SRC    = opencvtest.cpp
003   TARGET = opencvtest
004   CFLAGS = -Wall -O3 `pkg-config --libs opencv`
005   LDFLAGS = `pkg-config --cflags opencv`
006   CC = g++
007   
008   #-------------- compile and link ---------------
009   $(TARGET): Makefile $(SRC)
010       $(CC) -ggdb $(LDFLAGS) -o $(TARGET) $(SRC) $(CFLAGS)
011   
012   #-------------- others ------------------------
013   .PHONY: clean
014   clean:
015       rm $(TARGET)

コンパイルと実行は,次のようにします.

$ make
$ ./opencvtest

OpenCV を使った OpenCV プログラム

OpenCV といえば,ビデオカメラを使ったアプリケーションでしょう.ここでは,最も簡単なアプリケーションを示します.

ソースプログラム

リスト3は,WEBカメラから送られてくる画像を表示するプログラムです.

WEBカメラ画像を表示するプログラム (camera.cpp)

001   #include "opencv2/opencv.hpp"
002   
003   int main(){
004       cv::VideoCapture cap(0);
005       cv::Mat frame;
006   
007       if(!cap.isOpened()) return 999;
008   
009       while(1){
010           cap >> frame;
011           cv::imshow("WEB camera", frame);
012   
013           int key = cv::waitKey(1);
014           if(key == 'q'){
015               break;
016           }else if(key == 's'){
017               cv::imwrite("WEB_cam.png", frame);
018           }
019       }
020   
021       cv::destroyAllWindows();
022       return 0;
023   }

このプログラムの動作は,次のとおりです.

行番号 動作の説明
001 ヘッダーファイル「opencv.hpp」をインクルードすることで,様々な OpenCV のヘッダーファイルがインクルードされます.
004 カメラから画像をキャプチャーするクラスです.引数の「0」は,デバイス ID です.動画ファイル名を記述することも可能です.
005 「cv::Mat」は,マトリックスのクラスです.画像を入れることができる.
007 正常にカメラがオープで来たかどうかを判断します.
010 カメラからの画像をマトリックスに入れます.
011 画像をウィンドウに表示させます.第一引数はウィンドウ名,第二引数は画像データです.
014 1 [msec]の間,キーが押されるまで待ちます.引数は待ち時間(整数) [msec]を表します.0以下にすると待ち時間は無限になります.戻り値は,キーコードです.
017 画像をファイルに保存します.第一引数はファイル名,第二引数は画像データです.
021 すべてのウインドウを破棄します.

コンパイル

リスト3をコンパイルする Makefile をリスト4に示します.コマンド「make」で実行ファイルができます.

ビデオ画像を表示する OpenCV のソースファイルをコンパイルする Makefile

001   #-------------- basic settings ---------------
002   SRC    = camera.cpp
003   TARGET = camera
004   CFLAGS = -Wall -O3 `pkg-config --libs opencv`
005   LDFLAGS = `pkg-config --cflags opencv`
006   CC = g++
007   
008   #-------------- compile and link ---------------
009   $(TARGET): Makefile $(SRC)
010       $(CC) -ggdb $(LDFLAGS) -o $(TARGET) $(SRC) $(CFLAGS)
011   
012   #-------------- others ------------------------
013   .PHONY: clean
014   clean:
015       rm $(TARGET)

実行

プログラムを実行するとWEBカメラの動画が図2に示すウィンドウに現れます.キーボードの「s]を押すとキャプチャー画像が "WEB_cam.png" というファイル名で保存されます.「q」を押すとプログラムが終了します.

WEBカメラのキャプチャー
図2: WEBカメラのキャプチャー

ページ作成情報

参考資料

  1. OpenCV のサンプルファイルやコンパイル法については,「OpenCV - Community Help Wiki」の内容と同じです.全面的に,このサイトを参考にしました.

更新履歴

2015年10月15日 新規作成


no counter