将Eigen :: MatrixXd转换为pcl :: PointCloud <pcl :: pointxyz> </pcl :: pointxyz>

时间:2015-01-27 16:14:48

标签: eigen point-cloud-library

我的问题与Creating a PCL point cloud using a container of Eigen Vector3d有关,但我使用Eigen::MatrixXd代替Eigen::Vector3dgetMatrixXfMap()不是成员函数的一部分,因此不能代替getVector3fMap()使用。在这种情况下如何转换类型?

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

// resize to number of points
cloud->points.resize(Pts.rows());

/*DOES NOT WORK */
for(int i=0;i<Pts.rows();i++)
    cloud->points[i].getMatrixXfMap() = Pts[i].cast<float>();

1 个答案:

答案 0 :(得分:1)

它可能不是很性感,但为什么不在你的for循环中创建每个点?在这种情况下无需调整大小。

pcl::PointXYZ temp;
temp.x = Pts[i][0];
temp.y = Pts[i][1];
temp.z = Pts[i][2];
cloud.push_back(temp);