我的问题与Creating a PCL point cloud using a container of Eigen Vector3d有关,但我使用Eigen::MatrixXd
代替Eigen::Vector3d
。 getMatrixXfMap()
不是成员函数的一部分,因此不能代替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>();
答案 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);