OpenCVとの戦い、カメラ画像を表示する最低限のコード
id:nyaxtさんからOpenCVを教えてもらってとりあえずニャンニャンしてみた。
ありがとう!!
とりあえずOpenCVのカメラ入力方法
OpenCVライブラリセットアップは↓
http://d.hatena.ne.jp/sakusan_net/20080625/1214371034
とりあえずカメラ画像をウインドウに表示する。
#include <stdio.h> #include <cv.h> #include <highgui.h> #include <ctype.h> int main () { CvCapture *capture = 0; IplImage *frame = 0; double w = 320, h = 240; int c; capture = cvCreateCameraCapture (CV_CAP_ANY); cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, w); cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, h); cvNamedWindow ("Capture", CV_WINDOW_AUTOSIZE); // (3)カメラから画像をキャプチャする while (1) { frame = cvQueryFrame (capture); cvShowImage ("Capture", frame); c = cvWaitKey (10); if (c == '\x1b') break; } cvDestroyWindow ("Capture"); cvReleaseImage (&frame); return 0; }
cvCreateCameraCaptureの引数はカメラIDですが、上のコードではANYにしてとにかくカメラをみつけたら表示、となっています。
恒例の罠
あれですね。自分とりあえず片っ端から罠にはまってる気がします。
ここでの注意はこのコードからいらないと思って勝手に削らないこと
自分の場合、cvWaitKey(10) はエスケープでbreakをするためだけにあるものだと思い、最初に削ってしまいまして。そうするとウインドウがうまく表示されなかったり、フレームレートが異常に落ちたりします。
まず何も考えずにこのコードをコピペして走らせるのがいいと思います。