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キーで終了。