Eigen :: MatrixXf转换为std :: vector <eigen :: vector3f>

时间:2019-02-14 05:04:38

标签: c++ dictionary casting std eigen

我的最终目标是非常高效地将点云pcl::PointCloud<pcl::PointXYZ>转换为std::vector<Eigen::Vector3f>。 函数getMatrixXfMap()link)使我可以将点云转换为Eigen::MatrixXf

现在如何将Eigen::MatrixXf转换为std::vector<Eigen::Vector3f>? (或者,如果您知道从pcl::PointCloud<pcl::PointXYZ>转到std::vector<Eigen::Vector3f>的直接方法也对我有用)

This的答案恰恰相反

更新:这是我到目前为止所拥有的(它可以工作,但是比遍历所有要点要慢)。在这种情况下,我要强制转换成两倍,但是任何不强制转换成双倍的解决方案也对我有用:

  pcl::PointCloud<pcl::PointXYZ>::Ptr pclptr_map_;
  // Do stuff 
  Eigen::MatrixXd mat = (pclptr_map_->getMatrixXfMap()).cast<double>();
  int cols = pclptr_map_->points.size();
  std::vector<Eigen::Vector3d> v(pclptr_map_->points.size());
  Eigen::Matrix<double, 3, Eigen::Dynamic>::Map(v.data()->data(), 3, cols) = mat;

谢谢

0 个答案:

没有答案