OpenCVは、画像処理・画像解析ライブラリ。
カメラから取得した画像を使って、なにかしてみようと思い使ってみる。
まずはインストールから。Arch Linux の場合、2016年02月24日現在はバージョンは 2.4.12.2-2が利用可能。
(最新は3.1)
$ sudo pacman -S opencv
とりあえずサンプルでコンパイルとキャプチャできるかテスト。以下のCファイルとMakefileを同一ディレクトリにおいて、
$ make $ ./a.out
でコンパイル、実行した。無事にキャプチャ画像が表示された(キーを押すとウィンドウが消えます。)
CaptureWebCamera.c
/* ====================================================================== * CaptureWebCamera.c * Webカメラの画像をキャプチャして表示する * ====================================================================== */ #include <stdio.h> #include <stdlib.h> #include <highgui.h> int main(int argc, char *argv[]) { CvCapture *capture; /* キャプチャ画像 */ const char *title = "sample"; /* ウィンドウタイトル */ /* ウェブカメラの画像をキャプチャする */ if (NULL == (capture = cvCreateCameraCapture(0))) { fprintf(stderr, "%s: cannot capture from a web camera\n", argv[0]); return EXIT_FAILURE; } /* sampleという名前のウィンドウを生成する */ cvNamedWindow(title, CV_WINDOW_AUTOSIZE); /* キー入力待ちの間、更新し続ける */ while (cvWaitKey(1) == -1) { IplImage *img =cvQueryFrame(capture); cvShowImage(title, img); } /* キャプチャ画像データ解放 */ cvReleaseCapture(&capture); /* ウィンドウ削除 */ cvDestroyWindow(title); return EXIT_SUCCESS; }
TARGET=a.out CC=gcc SRCS=CaptureWebCamera.c HEADERS=$(wildcard *.h) OBJS=$(SRCS:.c=.o) INCLUDE=`pkg-config --cflags opencv` LINK=`pkg-config --libs opencv` CFLAG = -Wall $(TARGET): $(OBJS) $(CC) -o $@ $(LINK) $(OBJS) %.o : %.c $(HEADERS) $(CC) $(CFLAG) $(INCLUDE) -c -o $@ $<