将特征4x4矩阵转换为QMatrix4x4

时间:2016-04-20 04:03:19

标签: c++ arm qt4 eigen

我已经将RGBDSLAM转换为armhf(https://github.com/felixendres/rgbdslam_v2)并且我遇到了此功能的错误:

template <typename T >
QMatrix4x4 eigenTF2QMatrix(const T& transf)
{
  Eigen::Matrix<double, 4, 4, Eigen::RowMajor> m = transf.matrix();
  //QMatrix4x4 qmat( static_cast<qreal*>( m.data() )  ); (original line)
  QMatrix4x4 qmat( m.data() );
  printQMatrix4x4("From Eigen::Transform", qmat);
  return qmat;
}

该行:

QMatrix4x4 qmat( m.data() );

以及原作:

QMatrix4x4 qmat( static_cast<qreal*>( m.data() )  );

给我错误:

error: invalid conversion from 'Eigen::PlainObjectBase<Eigen::Matrix<double, 4, 4, 1> >::Scalar* {aka double*}' to 'int' [-fpermissive]

如何修复此功能以在手臂上工作?

1 个答案:

答案 0 :(得分:0)

你不能施放指针并期望它起作用。 Eigen有cast方法,但它对临时工作不起作用,所以你必须执行一个副本:

using Eigen;
Matrix<qreal, 4, 4, RowMajor> mcopy = m.cast<qreal>();

QMatrix4x4 qmat(mcopy.data());