MacでOpenCV(iSightキャプチャ)

まずは単純に画面キャプチャして表示する機能。
iSightでも何なく取り込めた。が、サイズ変更がOpenCVのホームページのサンプル通りに書いても有効では無い模様。
何も設定しないと640x480になる。

cvWaitKey関数で取得できるキーコード一覧は→http://homepage1.nifty.com/kodayan/java2/data01/apt053.html

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

#include <stdio.h>

int main(int argc, char ** argv) {
  CvCapture *capture = 0;
  IplImage *src_img = 0;
  IplImage *dst_img;


  //  double w = 320, h = 240;
  int c;

  capture = cvCreateCameraCapture(0);

  // キャプチャサイズ設定
  // この設定は利用するカメラに依存する ->isightではサイズが変わらないのでひとまずコメントアウト
  //  cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, w);
  //  cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT, h);
  
  cvNamedWindow("Capture", CV_WINDOW_AUTOSIZE);

  // カメラから画像をキャプチャする
  while (1) {
    src_img = cvQueryFrame(capture);
    // src_img と dst_imgの間で行いたい画像処理を実施する
    // まずは何もせず画面に表示
    dst_img = src_img;

    cvShowImage("Capture", dst_img);
    c = cvWaitKey(33);
    if (c == 0x1b) {
      // Esc入力で終了 
      break;
    } else if (c == 0x73) { // 's'キー入力

    }
  }
  
  cvReleaseCapture(&capture);
  cvDestroyWindow("Capture");
  
  return 0;
}

以上のファイルをhello.cとして保存して、下記Makefileでmakeする。

SRC = hello.c 
DST = hello

prefix=/opt/local
INCPATH=$(prefix)/include
LIBPATH=$(prefix)/lib 

OPT= -lcv -lcvaux -lcxcore -lhighgui 

CC=g++ -O

CFLAGS= -I$(INCPATH)/opencv
LDFLAGS=-L. -L$(LIBPATH) 


all:
	$(CC) $(SRC)  -o $(DST) $(CFLAGS)  $(LDFLAGS) $(OPT)

実行した後はEscキーで終了。