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

#contents

*int cvFindChessboardCorners(IplImage *image, CvSize pattern_size, CvPoint2D32f* corners, int* count, int flags); [#le165977]

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

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

**返り値 [#i57f7d72]
-座標の抽出に成功した場合は1を返す
-座標の抽出に失敗した場合は0を返す

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

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

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

**返り値 [#i08fbd28]
-void型なのでなし

*解説 [#q8d295b5]
-基本的に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):四角形を抽出する際に追加基準を利用する

*サンプルコード [#i6c47f32]
#geshi(c++,number){{
 const int patternX    = 2;                          // X軸方向の点の数
 const int patternY    = 3;                          // Y軸方向の点の数
 CvCapture *camera     = cvCaptureFromCAM(-1);       // カメラの初期化
 IplImage *image       = cvQueryFrame(camera);       // 画像を取得
 CvSize size           = cvSize(patternX, patternY); // パターンのサイズ
 CvPoint2D32f *corners = new CvPoint2D32f [patternX*patternY];
                                                     // 点格納用配列
 int result, count;                                  // 個数カウント用変数
 
 result = cvFindChessboardCorners(image, size, corners, &count);
                                                     // 点を検出する
 cvDrawChessboardCorners(image, size, corners, count, result);
                                                     // 検出した点を描画する
 
 cvReleaseCapture(&camera);
 delete [] corners;
}}

*実体ファイル [#i87c861c]
-cv/include/cvcalibinit.cpp
-cv/src/cv.h

ジャンル[[:OpenCV]][[:OpenCV 1.0]]準拠

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS