cvFindChessboardCorners

まずチェスボードパターンからコーナーの座標を求める。コーナーって何?ってのは下の画像参照。
チェスボード画像はOpenCV/docs/pattern.pdfというのがあるのでそれを使えばいい。この場合pattern_size = cvSize(8,6)となる。

int cvFindChessboardCorners( const void* image, CvSize pattern_size,
                             CvPoint2D32f* corners, int* corner_count=NULL,
                             int flags=CV_CALIB_CB_ADAPTIVE_THRESH );

const void* image //チェスボードを撮影した画像。
CvSize pattern_size //チェスボードコーナーの数。画像サイズではないことに注意。
CvPoint2D32f* corners //検出したコーナーの座標を格納する配列。サイズはコーナーの総数。
int* corner_count //検出したコーナーの数が返される
int flags //とりあえずCV_CALIB_CB_ADAPTIVE_THRESHとしておけばOK.詳細はリファレンス参照。


返される値はすべてのコーナーが検出された場合は1、できなかった場合は0.
検出した座標はcvDrawChessboardCorners()を使って描画することができるので、

int found;
img = cvLoadImage(filename);
dst = cvLoadImage(filename);
found = cvFindChessboardCorners(img, pattern_size, corners, &corner_count, CV_CALIB_CB_ADAPTIVE_THRESH);
cvDrawChessboardCorners(dst, pattern_size, corners, corner_count, found);

とか書いてやれば元の画像に検出したコーナーの点を重ねた画像が出来上がる。

このように正しく検出できた場合は七色になる。検出できなかった場合はすべての点が赤で表示される。
以下のCalibrateCamera2では複数枚の画像を使うが、すべて正しくコーナーが検出できたものを使うとする