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をするためだけにあるものだと思い、最初に削ってしまいまして。そうするとウインドウがうまく表示されなかったり、フレームレートが異常に落ちたりします。

まず何も考えずにこのコードをコピペして走らせるのがいいと思います。