将PCL点类型XYZ转换为EIGEN VECTOR 4F



我正在尝试将pcl pointxyz转换为eigen vector

Eigen::Vector4f min (minPnt.x, minPnt.y, minPnt.z);  
Eigen::Vector4f max (maxPnt.x, maxPnt.y, maxPnt.z);

其中minpnt和maxpnt是pcl :: pointxyz的类型。但是,我会收到一个错误,例如"错误C2338:this_method_is_only_for_vectors_of_a_a_specific_size"。您能建议其他方法或让我知道我的方法是否错了。

请使用getVector4fMap()获取Eigen::Vector4f并使用getVector3fMap()获取Eigen::Vector3f

示例:

PointT pcl_pt = ...;
Eigen::Vector3f e_v3f_pt = pcl_pt.getVector3fMap();
Eigen::Vector4f e_v4f_pt = pcl_pt.getVector4fMap();

如果您拥有的是pcl::Normal,则可以尝试使用getNormalVector4fMap,如下所示

pcl::Normal pcl_normal(0, 0, 1);
Eigen::Vector4f eigen_normal = pcl_normal.getNormalVector4fMap();

我解决了以下代码的上述问题。

auto x_min = static_cast<float>(minPnt.x); 
auto y_min = static_cast<float>(minPnt.y); 
auto z_min = static_cast<float>(minPnt.z); 
auto x_max = static_cast<float>(maxPnt.x); 
auto y_max = static_cast<float>(maxPnt.y); 
auto z_max = static_cast<float>(maxPnt.z); 
Eigen::Vector4f min(x_min, y_min, z_min, 0.0); 
Eigen::Vector4f max(x_max, y_max, z_max, 0.0); 

如果有更好的方法,请建议。

eigen::Vector4f正在寻找4个浮子,但您只给了3(x,y,z)。尝试在结尾添加0:

Eigen::Vector4f min (minPnt.x, minPnt.y, minPnt.z, 0);  
Eigen::Vector4f max (maxPnt.x, maxPnt.y, maxPnt.z, 0);

最新更新