チェッカーボードのエトセトラ

int cvFindChessboardCorners(IplImage *image, CvSize pattern_size, CvPoint2D32f* corners, int* count, int flags);

渡した画像内からチェッカーボードパターンを見つけて座標を取得する

引数

  • image:IplImage*型の画像
  • pattern_size:CvSize型のパターンの個数
  • corners:CvPoint2D32f*型のパターンの座標
  • count:int*型の検出された座標の個数.省略可能
  • flags:int型のフラグ.省略可能

返り値

  • 座標の抽出に成功した場合は1を返す
  • 座標の抽出に失敗した場合は0を返す

void cvDrawChessboardCorners(IplImage* image, CvSize pattern_size, CvPoint2D32f* corners, int count, int found );

求まった座標群を画像に描画する

引数

  • image:IplImage*型の画像
  • pattern_size:CvSize型のパターンの個数
  • corners:CvPoint2D32f*型のパターンの座標
  • count:int型のコーナー数
  • found:int型のフラグ

返り値

  • void型なのでなし

解説

  • 基本的にDrawChessboardCornersはFindChessboardCornersと対で使うことを想定されている
  • 画像からパターンを抽出して座標を得る.
  • パターンはhttp://tessy.org/wiki/image/pattern.pngみたいな市松模様を利用する
  • imageは画像
  • pattern_sizeはCvSizeで渡す
    • マスの数でなく,間の数を指定する
    • ex: cvSize(3,2) http://tessy.org/wiki/image/pattern.png
  • cornersには座標の値が返って来る/を入れる
  • countに検出された数が入る/を入れる
  • foundに1を入れると完全に見つかった場合,0の場合は見つかった座標だけ描画
    • FindChessboardCornersの返り値に対応する
  • flagsに処理を入れる
    • CV_CALIB_CB_ADAPTIVE_THRESH(1):画像を2値化するときに画像全体の明度値からしきい値を決定する.省略された場合のデフォルト値
    • CV_CALIB_CB_NORMALIZE_IMAGE(2):2値化する前にヒストグラム平坦化を行う
    • CV_CALIB_CB_FILTER_QUADS(4):四角形を抽出する際に追加基準を利用する

サンプルコード

  1.  const int patternX    = 2;                          // X軸方向の点の数
  2.  const int patternY    = 3;                          // Y軸方向の点の数
  3.  CvCapture *camera     = cvCaptureFromCAM(-1);       // カメラの初期化
  4.  IplImage *image       = cvQueryFrame(camera);       // 画像を取得
  5.  CvSize size           = cvSize(patternX, patternY); // パターンのサイズ
  6.  CvPoint2D32f *corners = new CvPoint2D32f [patternX*patternY];
  7.                                                      // 点格納用配列
  8.  int result, count;                                  // 個数カウント用変数
  9.  
  10.  result = cvFindChessboardCorners(image, size, corners, &count);
  11.                                                      // 点を検出する
  12.  cvDrawChessboardCorners(image, size, corners, count, result);
  13.                                                      // 検出した点を描画する
  14.  
  15.  cvReleaseCapture(&camera);
  16.  delete [] corners;

実体ファイル

  • cv/include/cvcalibinit.cpp
  • cv/src/cv.h

ジャンル:OpenCV:OpenCV 1.0準拠


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-27 (木) 11:20:01 (2734d)