OpenCVの開発環境を整える~Mac編~

とりあえず、マシンに接続されたカメラから動画像を取得して表示するだけのサンプルアプリケーションを作成する
以下のコードを適当にimage.cppとかにして保存

#include <cv.h>
#include <highgui.h>
#include <ctype.h>

int main (int argc, char **argv)
{
  int key;
  CvCapture *capture = NULL;

  if( ( capture = cvCreateCameraCapture( 0 ) ) == NULL ) {
    return -1;
  }   
   IplImage *frame = cvQueryFrame (capture);

  cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, frame->width);
  cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, frame->height);

  cvNamedWindow ("Capture", CV_WINDOW_AUTOSIZE);

  while (1) {
    frame = cvQueryFrame( capture );
    cvShowImage ("Capture", frame);
    key = cvWaitKey (10);
    if (key == 'q')
      break;
  }

  cvReleaseCapture (&capture);
  cvDestroyWindow ("Capture");

  return 0;
}

今回はこのコードをgcc/g++を用いてコンパイルします
コードの解説はいずれ。

$ g++ -o image image.cpp `pkg-config --cflags --libs opencv`

コンパイルできるけど、今後のことも考えてMakefileを作成します。

以下のコードをimage.cppと同じ階層にMakefileとして保存

CXX = g++
CXXFLAGS = `pkg-config --cflags opencv`
LDFLAGS = `pkg-config --libs opencv`
TARGET = $@
SOURCE = $@.cpp

TARGET:
	$(CXX) -o $(TARGET) $(SOURCE) $(CXXFLAGS) $(LDFLAGS)

.PHONY: clean
clean:
	rm -f *.o *~

これで準備オッケー
ターミナルから以下をタイプ

$ make image
g++ `pkg-config --cflags opencv`  `pkg-config --libs opencv`  image.cpp   -o image

$ ./image

iSightが起動したら成功。
ちなみに「q」でアプリケーション終了

makeが上手くいかない場合はきっとパスが通っていないんだろう

$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

をタイプしてみる
.bashrcに書き込んでおくとよい