将pcl :: PointCloud转换为Eigen :: MatrixBase

时间:2015-01-24 19:48:28

标签: c++ matrix eigen point-cloud-library

我正在尝试从this标头运行ICP算法。第260行的函数声明为

template <typename Derived1, typename Derived2>
void point_to_point(Eigen::MatrixBase<Derived1>& X,
                    Eigen::MatrixBase<Derived2>& Y,
                    Parameters par = Parameters()) {

我想在我的两个pcl::PointCloud上应用此算法,但它接受Eigen::MatrixBase。我试着按如下方式调用此函数

Eigen::MatrixBase<Eigen::Matrix<double,3,1,Eigen::RowMajor,3,100>> X;
Eigen::MatrixBase<Eigen::Matrix<double,3,1,Eigen::RowMajor,3,100>> Y;
Parameters par = Parameters()
point_to_point(X,Y,Parameters)

它给了我这个错误

error: ‘Eigen::MatrixBase<Derived>::MatrixBase() [with Derived = Eigen::Matrix<double, 3, 1, 1, 3, 100>]’ is protected
     MatrixBase() : Base() {}

我也试过Eigen::MatrixBase<Eigen::Matrix4f> X;,但每种类型似乎都受到了保护。它究竟意味着什么?

我搜索了很多,但没有找到任何MatrixBase的例子。

  • 如何在Eigen::MatrixBase中插入/删除值 - 未找到任何此类函数here
  • 如何将pcl::PointCloud转换为Eigen::MatrixBase并转换?
  • 我该如何调用此功能?

0 个答案:

没有答案