繁体   English   中英

将本征4x4矩阵转换为QMatrix4x4

[英]Converting Eigen 4x4 Matrix to QMatrix4x4

我一直在将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]

如何修复此功能以使其正常工作?

您不能投射指针并期望它能工作。 还有就是cast征的方法,但它不与的临时工作,所以你将不得不执行复制:

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

QMatrix4x4 qmat(mcopy.data());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM