Ogre + OpenCVを使用して単純な拡張現実アプリケーションを作成しました。すべてが機能していますが、Ogre の仮想カメラを実際のカメラに一致させる必要があります
カメラのパラメーターがわかりません (これは安価な Web カメラであり、ベンダーはそれらを提供していません)。私は(ここで説明されているcvCalibrateCamera2
いくつかの後)でカメラ固有のものを取得することができ、それらをで保存します。cvFindChessboardCorners
cvSave
cvCalibrateCamera2(objectPoints_, imagePoints_, pointCounts_,
imageSize, cameraMatrix, distortionCoeffs_, NULL,
NULL, CV_CALIB_FIX_ASPECT_RATIO );
cvSave(INTRINSIC_XML, intrinsicMatrix_);
AR アプリケーションは固有の行列を読み込みます。
CvMat* intrinsic = (CvMat*) cvLoad(INTRINSIC_XML);
これintrinsic->data.db
は、長さ 9 の double (3x3 行列) の配列への
ポインターOgre::Matrix4
ですsetCustomProjectionMatrix
。
Ogre's Forumで何かを見つけましたが、これは機能していません。OpenCV で見つかった 3x3 マトリックスと で必要な 4x4 マトリックスの間には、別の手順が必要だと思いますOgre::Camera
。
によって与えられた組み込み関数でこれを行う方法があることを願っていcvCalibrateCamera2
ます。何もない場合は、定規と分度器を使用して、手動で (大まかに) パラメータを取得する必要があります。
これは 3x3 の「組み込み関数」行列です。
836.391 0.000 460.430
0.000 836.391 281.440
0.000 0.000 1.000