Eigen :: MatrixXf в std :: vector - PullRequest
       19

Eigen :: MatrixXf в std :: vector

0 голосов
/ 14 февраля 2019

Моя конечная цель - очень эффективно преобразовать облако точек pcl::PointCloud<pcl::PointXYZ> в std::vector<Eigen::Vector3f>.Функция getMatrixXfMap() ( ссылка ) позволяет мне преобразовать Облако точек в Eigen::MatrixXf.

Как теперь можно преобразовать Eigen::MatrixXf в std::vector<Eigen::Vector3f>?(или если вы знаете прямой метод перехода от pcl::PointCloud<pcl::PointXYZ> к std::vector<Eigen::Vector3f>, который также работает для меня)

Этот ответ является совершенно противоположным

ОБНОВЛЕНИЕ: это то, что я до сих пор (это работает, но это медленнее, чем итерация по всем пунктам).Я использую удвоение в этом случае, но любое решение без приведения удвоения также работает для меня:

  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;

Спасибо

...