2015-01-27 2 views
0

Мой вопрос связан с Creating a PCL point cloud using a container of Eigen Vector3d, но я использую Eigen::MatrixXd вместо Eigen::Vector3d. getMatrixXfMap() не является частью функции-члена и поэтому не может использоваться вместо getVector3fMap(). Как можно преобразовать типы в этом случае?Преобразование Eigen :: MatrixXd в pcl :: PointCloud <pcl :: PointXYZ>

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

Это может быть не очень сексуально, но почему бы не просто создать каждую точку в вашей петле? Нет необходимости изменять размер в этом случае.

pcl::PointXYZ temp; 
temp.x = Pts[i][0]; 
temp.y = Pts[i][1]; 
temp.z = Pts[i][2]; 
cloud.push_back(temp); 
Смежные вопросы