EclipseでOpenCVプログラミング 入門したメモ

以前にGeanyでプログラミングしてるって書いたんですが、Eclipseも使えるようになりたいなと思っていたので、徐々に移行するべく入門してみました。
シングルコアのポンコツマシンでもEclipseは使えるので書き留めておきます。

備考

PC: Lenovo ThinkPad x100e
OS: Ubuntu 10.10

準備

素人の私はパッケージマネージャからeclipseをインストール。目に入ったのでCDT(C/C++DevelopmentTools?)くらいは入れておく。
起動してプロジェクトを作成します。"HelloWorldC++Project"っていうのを選ぶ。VC++と同じようにmain()だけ作ってくれるのであろう。

できたのでとりあずビルドしてみる。ctrl+Bでビルド。コンソールに"make all"って出てるからmakeしてくれたんだなー。
これでサンプルのプログラミングする準備はできたかな。

ビルド設定

OpenCVを使いたい。VC++makefileの経験から以下を設定する必要があると踏んでいる。

プロジェクトのプロパティで設定できるらしい。[Project]-[Propertis]-[C/C++ Build]あたりで設定できるのであろう。
んー、ちょっとわかりずらいが、[Project]-[Propertis]-[C/C++ Build]-[Tool Setting]で設定できるみたい。

以下の設定対象がある。

C++コンパイラーとリンカーをいじればいいのではないかな?
[GCC C++ Compiler]-[Directories]に"Include Path (-I)"って書いてある。/usr/includeを加える。

[GCC C++ Linker]-[Libralies]に"Libraries(-l)"と"Library search path(-L)"って書いてある。ライブラリ名とライブラリパスを指定するのであろう。
ライブラリ名にはcvとhighguiを加える。ライブラリパスには/usr/libを加える。

ビルドしてみると、コンソールに"-lcv -lhighgui"って出てる。リンクされてるのであろう。

サンプルをコーディング

ThinkPadの内蔵カメラからキャプチャするプログラムを組んでみました。雑なプログラムなので流してもらって結構です。

#include
#include
#include

using namespace std;
using namespace cv;

int main() {
printf(" program start..\n");
CvCapture* capture = cvCreateCameraCapture(0);
if(capture == NULL){
printf(" ERR: cvCreateCameraCapture() returns NULL.\n");
cvWaitKey(2000);
return -1;
}
IplImage* frame = cvQueryFrame(capture);
if(frame == NULL){
printf(" ERR: cvQueryFrame() returns NULL.\n");
cvWaitKey(2000);
return -1;
}
int cnt = 0;
while(1){
frame = cvQueryFrame(capture);
cvShowImage("CAPTURE", frame);
int key = cvWaitKey(10);
if(key == 'q'){
break;
}
}
cvDestroyAllWindows();
cvReleaseCapture(&capture);
return 0;
}

動いたのでオッケー。あとは単語補完の設定をすればいいか。Kinectのプログラミング環境をつくるぞー。