相机校准样例代码(大矩阵)



我正在看opencv中的相机校准示例代码。

现在,我在理解代码的一些行时遇到了麻烦。该代码位于Opencv 2.4.3的示例代码文件夹中。

我的问题是关于c++而不是opencv。

下面是opencv中的示例代码。

if( !rvecs.empty() && !tvecs.empty() )
{   
  CV_Assert(rvecs[0].type() == tvecs[0].type());
  Mat bigmat((int)rvecs.size(), 6, rvecs[0].type());
  for( int i = 0; i < (int)rvecs.size(); i++ )
  {
     Mat r = bigmat(Range(i, i+1), Range(0,3));
     Mat t = bigmat(Range(i, i+1), Range(3,6));
     CV_Assert(rvecs[i].rows == 3 && rvecs[i].cols == 1);
     CV_Assert(tvecs[i].rows == 3 && tvecs[i].cols == 1);
     //*.t() is MatExpr (not Mat) so we can use assignment operator
     r = rvecs[i].t();
     t = tvecs[i].t();
  }
  cvWriteComment( *fs, "a set of 6-tuples (rotation vector + translation vector) for each view",       0 );
  fs << "Extrinsic_Parameters" << bigmat;

我的问题是如何将数据放入'bigmat'。要为变量设置值,'bigmat'应该位于右侧,但没有。

有人熟悉这类代码吗?帮助我。

谢谢

rt矩阵实际上是为bigmat数据子集构建的头。所以当你把一些东西放入r时,你实际上是在对bigmat进行操作。为了防止类似的事情发生,您需要使用cv::MAt::clone()

相关内容

  • 没有找到相关文章

最新更新