アットウィキロゴ


OpenCVのダウンロード

  1. まず、ここからOpenCV1.0をダウンロードして下さい。
2.0ではwebカメラの映像を扱えないので注意してください。

OpenCVのインストール

  1. 次にダウンロードしてきた実行ファイルを起動して、インストールします。
    • 適当にOKや次を押して進めてください。
    • 基本的にデフォルトでいいです。
  2. システム変数のPathの設定する。
    • [システムのプロパティ] -> [詳細設定] -> [環境変数]を開きます。
    • システム変数のPATH(Path)の値に
    • 「C:\Program Files\OpenCV\bin」
    • を後ろに追加する。
    • もしPathであるなら、PATHに変更しないとOpenCVは使えない。(システム上は大文字でも小文字でも構いません)

VisualStudioの設定

インクルード・ライブラリパスの設定

  1. インクルードパスに以下を追加します。
    • C:\Program Files\OpenCV\cv\include
    • C:\Program Files\OpenCV\cvaux\include
    • C:\Program Files\OpenCV\cxcore\include
    • C:\Program Files\OpenCV\otherlibs\highgui
  2. ライブラリパスに以下を設定します
    • C:\Program Files\OpenCV\lib

プロジェクトの設定

依存するライブラリの設定

  1. プロジェクトのプロパティを開く
  2. [構成プロパティ] -> [リンカ] -> [入力]を開く
  3. 以下のライブラリを依存するファイルに追加する
cvcam.lib highgui.lib cxts.lib cv.lib cxcore.lib ml.lib cvaux.lib cvhaartraining.lib

これで下準備は完了です

サンプルを動かす

以下は公式が出しているサンプルから抜粋したものです。
#include <cv.h>
#include <highgui.h>
#include <ctype.h>

int main (int argc, char **argv){
  CvCapture *capture = 0;
  IplImage *frame = 0;
  double w = 320, h = 240;
  int c;
  // (1)コマンド引数によって指定された番号のカメラに対するキャプチャ構造体を作成する
  if (argc == 1 || (argc == 2 && strlen (argv[1]) == 1 && isdigit (argv[1][0])))
  capture = cvCreateCameraCapture (argc == 2 ? argv[1][0] - '0' : 0);

  /* この設定は,利用するカメラに依存する */
  // (2)キャプチャサイズを設定する.
  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 (2);
    if (c == '\x1b') break;
  }
  cvReleaseCapture (&capture);
  cvDestroyWindow ("Capture");
  return 0;
}
空のプロジェクトを作成して、以上のコードをコピペしてください。
ビルドして実行できれば成功です。

解説

構造体

  • CvCapture *capture;
 キャプチャするカメラの情報を格納する変数
  • IplImage *frame;
 OpenCVで扱える画像を格納する変数

cvCreateCameraCapture関数

capture = cvCreateCameraCapture (argc == 2 ? argv[1][0] - '0' : 0);
引数にカメラの番号を入れると、その番号のカメラの情報を返す関数
サンプルではコマンド引数に指定されたカメラの話のお号を引数にしている。
無かった場合は0番目を入れている。

cvSetCaptureProperty関数

cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH, w);
cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, h);
カメラのキャプチャサイズを設定する関数
第1引数にキャプチャするカメラの変数、第2引数に設定する項目、第3引数にはその値を指定します。

cvQueryFrame関数

frame = cvQueryFrame (capture);
引数にCvCaptureを入れてやると、そのカメラの現在のフレームを返り値として返してくれる。
サンプルではその画像を常に持ってきて、ウィンドウに表示している。

真っ黒画面しか表示されないときは

VistaでOpenCV
こちらの記事を参考に、ewclib.h をインクルードしてみてください。

注意

上記の記事のサンプルコードは内容が少し古いので、
ビルドするにはすこし修正が必要です。

【修正点1】
14行目辺りの
EWC_Open(SIZE_X, SIZE_Y, FPS);
EWC_Open(CAM_NUM, SIZE_X, SIZE_Y, FPS);
に変更する。

【修正点2】
32行目辺りの
EWC_Close();
EWC_Close(CAM_NUM);
もしくは、
EWC_CloseAll();
に変更する。


コメントどうぞ

名前:
コメント:
最終更新:2010年05月25日 23:33