外部パラメータと内部パラメータのキャリブレーションを行う

double calibrateCamera( InputArrayOfArrays _objectPoints, InputArrayOfArrays _imagePoints, Size imageSize, InputOutputArray _cameraMatrix, InputOutputArray _distCoeffs, OutputArrayOfArrays _rvecs, OutputArrayOfArrays _tvecs, int flags, TermCriteria criteria );

複数フレームで求められた平面パターンの座標からキャリブレーションを行う

引数

返り値

double型の再投影誤差

void cvCalibrateCamera2( CvMat* world_points, CvMat* image_points, CvMat* counts, CvSize image_size, CvMat* A, CvMat* distortion, CvMat* rotations, CvMat* translations, int flags);

複数フレームで求められた平面パターンの座標からキャリブレーションを行う(注意!このCインタフェースの関数はOpenCV 1.0 に準拠した記述です)

引数

返り値

解説(C++版)

解説(C版)

その他

サンプルコード

#geshi(c++,number){{

int M = 50;                                        // フレーム数
int N = M * patternX * patternY;                   // 総点数
CvMat *world_points = cvCreateMat(N, 3, CV_32FC1); // 世界座標
CvMat *image_points = cvCreateMat(N, 2, CV_32FC1); // 画像座標
CvMat *counts       = cvCreateMat(M, 1, CV_32SC1); // 各フレームの点の数
CvMat *A            = cvCreateMat(3, 3, CV_32FC1); // 内部パラメータ
CvMat *distortion   = cvCreateMat(4, 1, CV_32FC1); // 歪みベクトル
CvMat *rotation     = cvCreateMat(M, 3, CV_32FC1); // 回転ベクトルs
CvMat *translation  = cvCreateMat(M, 3, CV_32FC1); // 並進ベクトルs
CvSize image_size   = cvSize(width, height);

setPoints(world_points, image_points, counts, M, N); // ここで点をセットする
// キャリブレーションを行う
cvCalibrateCamera2( world_points, image_points, counts, image_size, A, distortion, rotations, translations);

cvReleaseMat(&world_points);
cvReleaseMat(&image_points);
cvReleaseMat(&counts);
cvReleaseMat(&A);
cvReleaseMat(&distortion);
cvReleaseMat(&rotation);
cvReleaseMat(&translation);

}}

実体ファイル

注意

ジャンル:OpenCV:OpenCV 1.0:OpenCV 2.4準拠


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-07-07 (月) 17:46:52