gpt4 book ai didi

c++ - 用于增强现实的 OpenCV 相机内在矩阵到 Ogre 投影矩阵

转载 作者:太空狗 更新时间:2023-10-29 21:48:18 25 4
gpt4 key购买 nike

我使用 Ogre + OpenCV 编写了一个简单的增强现实应用程序。一切正常,但我需要将 Ogre 的虚拟相机与我的真实相机相匹配

我不知道摄像头参数(这是一个便宜的网络摄像头,供应商不提供)。我可以通过 cvCalibrateCamera2 获得相机固有功能(经过一些 cvFindChessboardCorners 描述 here )我用 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 矩阵和 Ogre::Camera 所需的 4x4 矩阵之间还需要一些其他步骤.

我希望有一些方法可以使用 cvCalibrateCamera2 给出的内在函数来做到这一点.如果没有,我将需要拿一把尺子和一个 protractor 并(粗略地)手动获取参数。

这是 3x3“内在”矩阵:

836.391     0.000   460.430 
0.000 836.391 281.440
0.000 0.000 1.000

最佳答案

如下创建投影矩阵。

垫[0,0] = fx

垫[1,1] = y

垫[2,2] = +- .01

垫[3,2] = +- 1

垫[3,3] = 0

在哪里fx = intrinsic [0]/imageSize.Width;

fy = intrinsic [1*3 + 1]/imageSize.Height;

为 mat[2,2] 和 mat[3,2] 尝试负值和正值的组合。

通常两者都会有负值。其他参数可以忽略

关于c++ - 用于增强现实的 OpenCV 相机内在矩阵到 Ogre 投影矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10984486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com