2015-01-27 1 views
0

제 질문은 Creating a PCL point cloud using a container of Eigen Vector3d과 관련된 질문이지만 Eigen::Vector3d 대신 Eigen::MatrixXd을 사용하고 있습니다. getMatrixXfMap()은 멤버 함수의 일부가 아니므로 getVector3fMap() 대신 사용할 수 없습니다. 이 경우 유형을 어떻게 변환 할 수 있습니까?Eigen :: MatrixXd를 pcl :: PointCloud로 변환하십시오.

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);