我使用Ogre + OpenCV编写了一个简单的增强现实应用程序。一切正常,但我需要将Ogre的虚拟摄像头与我的真实摄像头匹配。
我不知道摄像头参数(它是一款廉价的网络摄像头,供应商没有提供)。我可以使用cvCalibrateCamera2(在执行了一些cvFindChessboardCorners操作后,如这里所述)获取相机内部参数,并使用cvSave保存它们。
所以,
我在Ogre's Forum中找到了一些东西,但这不起作用。我猜在OpenCV找到的3x3矩阵和
我希望有一种使用
这是3x3“内参”矩阵:
我不知道摄像头参数(它是一款廉价的网络摄像头,供应商没有提供)。我可以使用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的双精度数组的指针(3x3矩阵)。我该如何将其转换为Ogre::Matrix4
,以便可以在setCustomProjectionMatrix
中使用它。我在Ogre's Forum中找到了一些东西,但这不起作用。我猜在OpenCV找到的3x3矩阵和
Ogre::Camera
需要的4x4矩阵之间需要其他步骤。我希望有一种使用
cvCalibrateCamera2
给出的内参来完成此操作的方法。如果没有,我将需要拿尺子和量角器手动获取参数(大致)。这是3x3“内参”矩阵:
836.391 0.000 460.430
0.000 836.391 281.440
0.000 0.000 1.000