チェッカーボードのエトセトラ
#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]]準拠